jar 问题 : java.io.IOException: invalid header field

本文介绍了如何使用jar命令创建包含或不包含清单文件MANIFEST.MF的jar包。通过具体示例说明了不同参数的作用,例如使用-m参数时的注意事项及如何避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过本文, 我们明白了什么是 jar的清单文件 MANIFEST.MF,

 

简单示例:

E:\ws\Test\WEB-INF\classes>jar cvfm testCL.jar ListTest.class
java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:406)
        at java.util.jar.Manifest.read(Manifest.java:199)
        at java.util.jar.Manifest.<init>(Manifest.java:69)
        at sun.tools.jar.Main.run(Main.java:172)
        at sun.tools.jar.Main.main(Main.java:1177)

 

我仅仅只有一个 ListTest.class 文件, 是无法使用jar 的 m 参数的, 去掉就好了。

E:\ws\Test\WEB-INF\classes>jar cvf testCL.jar ListTest.class
已添加清单
正在添加: ListTest.class(输入 = 641) (输出 = 367)(压缩了 42%)      

 

invalid header field 可以理解为 jar命令 的参数, 阅读 java.util.jar.Manifest 源码就知道了哦!

 

-M 是去掉META-INF目录 及 下面的 MANIFEST.MF文件的意思( 默认是会生成清单文件的): 

 

E:\ws\Test\WEB-INF\classes>jar -cvfM testCL.jar ListTest.class
正在添加: ListTest.class(输入 = 647) (输出 = 370)(压缩了 42%)

 

 -C 表示使用另外的 目录, 作为需要打jar包的内容

 

解决参照http://blog.youkuaiyun.com/gz_xiangjun/article/details/6962818 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值