用jar发布程序时出现java.io.IOException: invalid header field 错误!!!
at java .util.jar.Attributes.read(Attributes.java:389)
at java .util.jar.Manifest.read(Manifest.java:182)
at java .util.jar.Manifest.(int)(Manifest.java:151)
at sun.tools .jar.Main.run(Main.java:151)
at sun.tools .jar.Main.main(Main.java:1149)
清单文件
Mymoon.mf
Manifest-Version: 1.0
Main-Class: MemoryGame
Created-By: 1.2(Sun Microsystems Inc.)
at java .util.jar.Attributes.read(Attributes.java:389)
at java .util.jar.Manifest.read(Manifest.java:182)
at java .util.jar.Manifest.(int)(Manifest.java:151)
at sun.tools .jar.Main.run(Main.java:151)
at sun.tools .jar.Main.main(Main.java:1149)
清单文件
Mymoon.mf
Manifest-Version: 1.0
Main-Class: MemoryGame
Created-By: 1.2(Sun Microsystems Inc.)
1、Class-path: 的冒号后面要加一个空格
java.io.IOException: invalid header field异常(tomcat5.5中)
是因为MAINFEST.MF文件的Class-path:后面少了一空格 Manifest-Version: 1.0
Class-Path:
2、Main-Class: 的冒号后面要加一个空格。
java.io.IOException:invalid header field
at java.util.jar.Attributes.read<Attributes.java:359>
ar...
...
异常位置省略。
当时我的manifest.mf文件内容为:
Manifest-Version: 1.0
Main-Class:My1
Created-By: 1.6.0_10-rc2 (Sun Microsystems Inc.)
出现这个错误后,我反复看了命令格式和manifest的内容,并没有错误。
后来仔细看了下正确的mf格式,发现Main-Class:My1冒号后面要加一个空格。
正确格式如下:
Manifest-Version: 1.0
Main-Class: My1
Created-By: 1.6.0_10-rc2 (Sun Microsystems Inc.)
3、Manifest-Version: 1.0和Class-Path: 之间不允许有空行。
今天神奇一样的遇到了一个异常:java.io.IOException: invalid header field ,昨天还好好的代码,今天就变成不能运行了。
然后在网上查找了一下,发现原因是由于META-INF下的MANIFEST.MF文件,可是我从来没有动过这个文件啊,根据网上的解决办法,我把原来
Manifest-Version: 1.0Class-Path:
变成:
Manifest-Version: 1.0
Class-Path:
也就是去掉空行,但还是没有作用,后来又去掉底下多余的空行,结果还真的不报错了!
引自:http://hi.baidu.com/sppeivan/item/5d1f681593b31609d1d66d3d