2012-02-14 156 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

相關問題