что такое java.io.IOException: неверное поле заголовка? - PullRequest
7 голосов
/ 14 февраля 2012

Когда я пытаюсь запустить следующую команду:

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)

В чем может быть причина, по которой я получаю эти исключения?

Ответы [ 5 ]

6 голосов
/ 14 февраля 2012

Я предполагаю, что есть проблема с вашим файлом манифеста. Посмотрите, нет ли у вас опечатки в имени переменной заголовка.

1 голос
/ 25 сентября 2013

Убедитесь, что ваш файл manifest.txt содержит содержимое следующим образом:

Main-Class: <"package-name">. <"Main-class-name">. Class <"новая строка">

Обратите внимание, что для анализа необходим перевод новой строки / возврат каретки.

Ссылка на эту ссылку http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

0 голосов
/ 25 апреля 2017

Глупая ошибка (которую я сделал) заключалась в том, чтобы сделать jar cvfm manifest.txt myjar.jar *.class вместо jar cvfm myjar.jar manifest.txt *.class

0 голосов
/ 12 октября 2014

Я решил похожую проблему.Это всегда первый заголовок манифеста, заставляющий JAR генерировать исключение IOException «неверный заголовок».Так что я думаю, что спецификация файла utf-8 делает Jar непонятным.Хотя я думаю, что где-то читал, что, говоря, файл манифеста должен быть закодирован в utf-8, я сохранил свой mf-файл в ANSI с помощью Блокнота Windows, и JAR просто перестал жаловаться на имя заголовка.

0 голосов
/ 02 мая 2013

"jar -cvmf" вместо "jar cvfm" должно устранить вышеуказанную ошибку

...