【BugCracking】ecllipse依赖其他jar包的工程导出成Runnable Jar File

目录

bug:Exception in thread "main" java.lang.NoClassDefFoundErro

BugCracking

打包jar包

调用jar包


bug:Exception in thread "main" java.lang.NoClassDefFoundErro

工程内部调用swingx包,工程按照正常export流程导出jar包后,在命令行中运行

java -jar destination.jar

报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/swingx/JXPanel

BugCracking

这个错误是由于导出的jar包没有找到工程引入的第三方jar包导致的

注意要把当前工程导出成jar包,该工程还依赖其他第三方jar包时,要自定义文件MANIFEST.MF。

在项目下建立文件MANIFEST.MF,内容如下:

Manifest-Version: 1.0
Class-Path: lib/swingx-all-1.6.5.jar lib/commons-codec.jar
Main-Class: ui.HelloLabel

其中第一行表示了Manifest的版本;第二行则指定了第三方jar包的位置,如果引入多个第三方jar包,则要以空格作为间隔;第三行是java项目的main函数所在文件。

注意:

1、Menifest-Version、Class-Path、Main-Class的冒号后面要加空格,才能继续写相应的内容

2、jar包导出后要在jar包的同级目录下建立lib文件夹(lib文件夹和jar包在一个目录下),里面是工程引用的第三方jar包,这里第三方jar包位置放错了,会报“Exception in thread "main" java.lang.NoClassDefFoundError”的错误。

3、Main-Class 后面是类的全地址,package name.classname,注意不要加".java"后缀,否则会报“找不到或无法加载主类”的错误

4、Main-Class一行编辑完了一定要加空格,让光标到下一行

如最后jar包导出为imageEstimate.jar,lib文件夹里为第三方jar包,因为java工程中还调用了一个python文件,所以将python文件也放在同级目录下,不然也会报错。

java工程中调用python文件部分:

filepath是要传入newComplexEstimate.py的参数,System.getProperty("user.dir")获取程序当前路径,“System.getProperty("user.dir") + "/newComplexEstimate.py"即为被调用python文件的地址。

打包jar包

弄清楚原因之后就可以重新打包jar包了。

项目右击->export->java->jar file

点击next

点击next->选择using existing manifest from workspace 并选择自定义建立的manifest file

点击finish即可。

调用jar包

命令行进入jar包所在目录,输入一下命令即可。

java -jar imageEstimate.jar

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值