2012-02-14 146 views
6

当我尝试运行以下命令:什么是java.io.IOException:无效的头字段?

jar cvfm myjar.jar manifest.txt *.class 

我得到以下异常:

java.io.IOException: invalid header field 
    at java.util.jar.Attributes.read(Attributes.java:410) 
    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:171) 
    at sun.tools.jar.Main.main(Main.java:1176) 

可能是什么我得到这些异常的原因是什么?

回答

6

我猜你的清单文件存在问题。仔细查看一下,如果你的头文件变量名称中有错字。

+0

什么是头变量? – 2012-02-14 10:41:09

+0

请仔细阅读:http://docs.oracle.com/javase/tutorial/deployment/jar/ – duffymo 2012-02-14 10:41:44

0

“罐子-cvmf”而不是“罐子CVFM”要解决上述错误

0

我解决了类似的问题。 它总是第一个清单头让JAR抛出一个“无效头”IOException。所以我猜这是UTF-8文件的BOM让Jar无法理解。 虽然我认为我已经阅读过某个地方说应该使用utf-8编码的清单文件,但是我使用Windows的记事本将我的mf文件保存到ANSI,而JAR只是停止抱怨报头名称。

0

一个愚蠢的错误做(我做的)是做jar cvfm manifest.txt myjar.jar *.class,而不是jar cvfm myjar.jar manifest.txt *.class