Невозможно собрать с помощью команды 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