java 打jar包遇到的坑

前言:

      java如何打jar包并运行jar包文件就不重点描述了,一般都是通过工具直接导出或通过命令生成jar包,通过工具生成的META-INF文件夹里的配置文件MANIFEST.MF文件一般都选择配置好的。导出后可直接java -jar xxx.jar运行,通过命令生成的MANIFEST.MF一般都没配置Main-Class: ,需要你手动加入你的主文件。下面主要针对命令打 jar包运行jar包遇到的坑讲解一下:

     一.java 打包 、运行

          1.建一个TEST文件夹,里面建一个java文件 Test.java, 然后编译 javac  Test.java 这时文件里多了一个Test.class文件,这个就是我们要打包的文件。开始打包:jar -cvf Test.jar Test.class 打包完成生成一个Test.jar的包,如果直接运行jar包 java -jar Test.jar会报一个错:"Test.jar中没有主清单属性",说明生成的jar包中MANIFEST.MF没有配置Main-Class: ,将其配置成Main-class: Test即可,主要要冒号后面有空格。看上去万事大吉了,结果一运行又报了错:"尝试打开文件Test.jar时出现意外错误",这又是什么情况,最后发现是好压软件的坑,jar包你用好压打开后,又修改了MANIFEST.MF文件后,保存文件时相当于用好压直接压缩了,造成jar文件的损坏,导致不能正常运行。

          2.选择另一种方式,把MANIFEST.MF文件提前准备好,然后直接用jar命令打成的包应该没啥问题,于是我用notepad编辑配置好MANIFEST.MF文件后开始打包 jar-cvfm  Test.jar  META-INF\MANIFEST.MF Test.class 这应该可以了,结果打包时就报错:"java.io.IOException: invalid header field name: ???Manifest-Version",网上找了半天也没解决,最后发现我用的notepad工具编码用的UTF-8-BOM,必须用UTF-8才可以,转换了下编码,打包通过了。直接java -jar Test.jar 运行成功!

     不同条件下出现的问题现象不一样,只是针对自己的问题现象做下描述讲解,仅供参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值