代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file
今天开发一个小工具,引用了Log4j,来记录日志,在eclipse下运行,代码正常,打包成jar放到doc命令行下运行报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at miaogen.zeng.util.jdbc.Configuration.<init>(Configuration.java:20)
at miaogen.zeng.util.jdbc.Configuration.getInstance(Configuration.java:37)
at miaogen.zeng.service.index.main(index.java:11)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
试了百度上各种方法。后来试了下导出 runable jar file试试。运行成功!
jar file和runable jar file 导出后的区别如下图:
runable jar file:
jar file:
META-INF的文件区别
下文是转载的解释
直接运行 .class的方法 java -cp . com.network.Chat , 不用加.class后缀
从eclipse中export 的jar file,仅仅是把.class打包了。所以执行这种jar file需要用 java -cp .;ch04.jar com.thnkjava.ch04, 如果你还应用到另外的lib库,你必须在cp里说明,也就是 java -cp .;ch04.jar;lib01.jar;lib02.jar com.thnkjava.ch04 来执行。事实上可以发现ch04.jar也在cp里面,说明ch04.jar就是lib库,最后的参数指明了要被执行的类名。
如果从eclipse里export出的是 runnable jar file,那么个执行这个jar包的时候是不需要指明哪个类的,直接这样执行 java -jar ch04.jar。原因就是jar包中的MANIFEST.MF内容不同。 runnable jar包中指明哪个类先执行,所以你可以用 java -jar ch04.jar来执行你想要执行的代码,而不必指明具体哪个类。这个你可以打开 jar包查看MANIFEST.MF的区别,一目了然。
生成runnable jar file时,有两个选项,Extract required libraries into generated JAR 和 package equired libraries into generated JAR。 前者是把你用到的.class 文件提取出来,后者则是把你所需要的所有jar包都打进一个包里。两者的MANIFEST.MF文件内容也有所不同,这应该是eclipse造成的,IDE 做了自己的事情,具体就不研究了。
代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file相关推荐
- linux命令行下读取u盘内容_Linux命令行下的快捷键
1. 命令行下的快捷键 经常在命令行下工作的同志们,可能用的最多的就是两个上下键,主要用来调出 历史命令:使用左右箭头使光标向后或向前移动以修改上次使用过的命令.其实 这样做效率并不是很高,有了快捷键 ...
- 渗透基础——命令行下安装Microsoft .NET Framework
0x00 前言 在渗透测试中,有些工具的运行(例如高版本的Powershell)需要依赖Microsoft .NET Framework 4.0的环境. 而默认配置下,Win7不支持Microsoft ...
- Linux下编译build的命令,Linux命令行下编译Android NDK的示例代码
这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究Android NDK ...
- VS2017报错:E1696 命令行错误: 无法打开 元数据 文件 “platform.winmd”
VS2017报错:E1696 命令行错误: 无法打开 元数据 文件 "platform.winmd" 在下载别人的项目到自己的电脑上时,打开项目出现问题,一开始报错显示无法加载&q ...
- Glup命令行相关报错
Glup命令行相关报错 gulp : 无法加载文件 C:\Node\gulp-demo\gulpfile.js,因为在此系统上禁止运行脚本 解决方法如下 https://blog.csdn.net/g ...
- mysql 在cmd命令行下操作遇到的转义字符
今天在cmd命令行下,用mysqldump来进行备份数据库,遇到了这个一个问题, 先看命令如下, mysqldump -uyaner -pyaner&123 -h 192.168.0.5 t ...
- kvm--virsh命令行下管理虚拟机
virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式: (1)基础操作 --- 命令行下管理虚拟机 virsh list ...
- linux虚拟机启动网卡命令,命令行下无法联网怎么办,vmware下安装archlinux实现网络连接,实机grub引导启动linux...
安装archlinux可参考: 百度·贴吧里也有置顶帖给出了官方维基: 由于用的电信宽带需要客户端(大学苦逼,需要客户端),无线网卡也不支持(cmcc和chinanet都需要登陆网页,命令行下无线网连 ...
- 在linux命令行 下学习编写java
对于新手来讲, 使用eclipse 等IDE来学习java是最为方便和效率的. 学习Java能令程序猿深刻地理解面向对象的编程思想 . 但Java 是一个跨平台的编程语言. 本文介绍下在命令行下学习j ...
最新文章
- python 图像iou_如何通过python实现IOU计算代码实例
- 【Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )
- struct的初始化
- 【IT界的厨子】酱香鲈鱼
- 亲和数 杭电2040
- 科园贸易:帆软助力其推动数据应用落地,打造自主可控数据平台
- Windows临界区简单实现
- 最简理解空间射线与平面交点
- IOS开发学习笔记(一)——ObjectC语言快速入门
- sift算法_图像配准SIFT
- 刘强东学习亚马逊:控制供应链 技术是最大障碍
- Python绘制用于学术论文投稿的黑白图片
- 反编译so库破解so
- 新手都能用到的140个电脑技巧
- Tommy Hilfiger官宣金秀贤为2021年秋季男装系列全新品牌大使
- 4章 RxJava基本响应类型
- 程序猿思维释放:打破常态
- 托尔斯泰《战争与和平》主要人物
- 【目标检测】MMDetection的安装与基础使用
- Windows7下载IE浏览器11版本
热门文章
- jsp mysql登录 demo_java jsp+servlet+mysql实现登录网页设计
- 求10 翻译c语言,求助:谁能帮我翻译下最基础的C语言,我是新手,谢谢了!
- ksrot php_php中ksort函数的功能起什么作用呢?
- 16字节 oracle md5,Oracle中的MD5加密
- Hibernate学习之hibernate.cfg.xml
- php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...
- linux文件浏览 ls,linux浏览文件命令
- 杨宏宇:腾讯多模态内容理解技术及应用
- 计算机常用主题词,标引主题词的目的是( )。A.反映文件的全部内容B.便于计算机检索和管理C.供归_考题宝...
- 职业规划纵向横向_收下这份《职业规划喂饭式指南》