what is java.io.IOException: invalid header field?

青春壹個敷衍的年華 提交于 2019-12-01 16:07:37

问题


When i try to run the following command :

jar cvfm myjar.jar manifest.txt *.class

I get the following exceptions :

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)

What could be the reason i am getting these exceptions ?


回答1:


I'm guessing that there's a problem with your manifest file. Give it a look to see if you've got a typo in the name of a header variable.




回答2:


Check that your manifest.txt file contains the content in this manner :

Main-Class: <"package-name">.<"Main-class-name">.class <"newline">

Note that newline/carriage-return is necessary for parsing.

Refer to this link http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html




回答3:


"jar -cvmf" instead of "jar cvfm" should resolve the above error




回答4:


I solved a similar problem. It's always the first manifest header makes JAR throw an "invalid header" IOException. So I guess it's the BOM of a utf-8 file makes Jar can't understand. Although I think I have read somewhere that saying a manifest file should utf-8 encoded, I saved my mf file to ANSI with Notepad of Windows, and JAR just stopped complaining about the header name.




回答5:


A stupid mistake to do (which I did) was to do jar cvfm manifest.txt myjar.jar *.class instead of jar cvfm myjar.jar manifest.txt *.class



来源:https://stackoverflow.com/questions/9275277/what-is-java-io-ioexception-invalid-header-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!