2012-02-14 22 views
6

Kiedy próbuję uruchomić następujące polecenie:Co to jest java.io.IOException: nieprawidłowe pole nagłówka?

jar cvfm myjar.jar manifest.txt *.class 

dostaję następującymi wyjątkami:

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) 

Co może być powodem Dostaję te wyjątki?

Odpowiedz

6

Zgaduję, że wystąpił problem z plikiem manifestu. Sprawdź, czy masz literówkę w nazwie zmiennej nagłówka.

+0

co jest zmienny nagłówek? –

+0

Przeczytaj uważnie: http://docs.oracle.com/javase/tutorial/deployment/jar/ – duffymo

0

"jar -cvmf" zamiast "jar cvfm" powinno rozwiązać powyższy błąd

0

I rozwiązać podobny problem. To zawsze pierwszy nagłówek manifestu sprawia, że ​​JAR rzuca "nieprawidłowy nagłówek" IOException. Więc domyślam się, że to BOM pliku utf-8 sprawia, że ​​Jar nie może tego zrozumieć. Chociaż myślę, że przeczytałem gdzieś, że powiedzenie pliku manifestu powinno zakodować UTF-8, zapisałem mój plik mf do ANSI z Notatnikiem Windows, a JAR przestał narzekać na nazwę nagłówka.

0

głupi błąd zrobić (co zrobiłem) było zrobić jar cvfm manifest.txt myjar.jar *.class zamiast jar cvfm myjar.jar manifest.txt *.class