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

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

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 ]

0 голосов
/ 16 ноября 2018

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

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

jar cmf foo/manifest.mf foo.jar foo/*.class
0 голосов
/ 16 ноября 2018

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

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