Невозможно собрать с помощью команды jar - java.io.IOException: слишком длинная строка

У меня есть папка, которая выглядит так:

foo/
 Bar.java
 Bar.class
 Foo.java
 Foo.class
 manifest.mf

файлы.java находятся в пакете с именем x:

package x;

Я генерирую.class файлы с:

javac foo/*.java

Затем я пытаюсь упаковать в готовый формат JAR с:

jar cmf foo.jar foo/manifest.mf foo/*.class

но я получаю эту ошибку:

 java.io.IOException: line too long
        at java.base/java.util.jar.Attributes.read(Attributes.java:381)
        at java.base/java.util.jar.Manifest.read(Manifest.java:228)
        at java.base/java.util.jar.Manifest.<init>(Manifest.java:80)
        at java.base/java.util.jar.Manifest.<init>(Manifest.java:72)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:264)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1669)

Содержимое manifest.mf просто:

Main-Class: x.Bar

Компилируется с javac так что не знаете, что происходит, или почему ему не нравится файл манифеста, кто-нибудь знает?

2 ответа

Решение

Правильная командная строка будет

jar -c -m foo/manifest.mf -f foo.jar foo/*.class

Я считаю, что для команды "jar cmf" первым аргументом должен быть путь к манифесту. Как описано в документации https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html

Не могли бы вы попробовать в вашем случае построить его с помощью следующей команды?

jar cmf foo/manifest.mf foo.jar foo/*.class
Другие вопросы по тегам