java -jar 执行jar包出现 java.lang.NoClassDefFoundError

阿七七七 2018-08-30 04:09:04
我用idea打包的jar,运行出现java.lang.NoClassDefFoundError,报错缺少的包在打包时已经包含进去,MANIFEST.MF文件也没写错,百度许久还是没有解决,特来求助!
浏览器出问题不能上传,就只能大概描述
一个java项目,三方库在根目录lib文件夹里。
MANIFEST.MF文件内容:
Manifest-Version: 1.0
Class-Path: lib/log4j.jar lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

...全文
2647 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
listandlist 2019-08-08
  • 打赏
  • 举报
回复
将第三方的jar放在jar同级目录,没看懂这句表述,请问怎么做的
阿七七七 2018-09-03
  • 打赏
  • 举报
回复
算了,结贴了,散分
stacksoverflow 2018-08-31
  • 打赏
  • 举报
回复
引用 4 楼 stacksoverflow 的回复:
[quote=引用 2 楼 stacksoverflow 的回复:]
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

好像不行,不好意思。[/quote]
参考
https://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar
stacksoverflow 2018-08-31
  • 打赏
  • 举报
回复
引用 2 楼 stacksoverflow 的回复:
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

好像不行,不好意思。
oyljerry 2018-08-31
  • 打赏
  • 举报
回复
主要是配置的路径和实际的路径对应上
stacksoverflow 2018-08-31
  • 打赏
  • 举报
回复
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil
阿七七七 2018-08-31
  • 打赏
  • 举报
回复
没有人。。。。。
问题算是解决了,将第三方的jar放在jar同级目录,并在MANIFEST.MF文件作相应的配置便可以运行
也就是说引用的目录可能不对,总之弄出来可以运行了,先这样
希望有大神可以来解惑
阿七七七 2018-08-31
  • 打赏
  • 举报
回复
引用 8 楼 stacksoverflow 的回复:
[quote=引用 7 楼 ab17171313 的回复:]
[quote=引用 5 楼 stacksoverflow 的回复:]
[quote=引用 4 楼 stacksoverflow 的回复:]
[quote=引用 2 楼 stacksoverflow 的回复:]
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

好像不行,不好意思。[/quote]
参考
https://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar[/quote]
谢谢,那边问题看着跟我一样,不过我英语有点差,看不是很懂[/quote]
就是说放在里面不行的意思[/quote]好吧,那打包的时候添加那些jar包意义何在
stacksoverflow 2018-08-31
  • 打赏
  • 举报
回复
引用 7 楼 ab17171313 的回复:
[quote=引用 5 楼 stacksoverflow 的回复:]
[quote=引用 4 楼 stacksoverflow 的回复:]
[quote=引用 2 楼 stacksoverflow 的回复:]
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

好像不行,不好意思。[/quote]
参考
https://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar[/quote]
谢谢,那边问题看着跟我一样,不过我英语有点差,看不是很懂[/quote]
就是说放在里面不行的意思
阿七七七 2018-08-31
  • 打赏
  • 举报
回复
引用 5 楼 stacksoverflow 的回复:
[quote=引用 4 楼 stacksoverflow 的回复:]
[quote=引用 2 楼 stacksoverflow 的回复:]
改成这样
Manifest-Version: 1.0
Class-Path: ./lib/log4j.jar ./lib/sqljdbc4-2.0.jar
Main-Class: com.company.CatchDataUtil

好像不行,不好意思。[/quote]
参考
https://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar[/quote]
谢谢,那边问题看着跟我一样,不过我英语有点差,看不是很懂
阿七七七 2018-08-31
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
主要是配置的路径和实际的路径对应上

直接打包在jar里面是可以读取的吗?就是想实现,一个打包,直接就可以运行
因为配置之后,感觉始终读取的是jar文件同级目录,也可能是我打包有什么问题,百度找来的教程步骤都差不多

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧