Я опытный разработчик, но с очень небольшим опытом работы с Java. На моей работе я унаследовал небольшой проект JNLP, который должен работать вне песочницы (all-permissions
). Я так понимаю, что с JDK 1.7.0_51 теперь нам также нужно указать «Permissions: all-permissions
» в манифесте.
До сих пор мы создавали его с помощью DrJava, но в меню DrJava Проект | Создать файл Jar из проекта, флажок Пользовательский манифест неактивен (недоступен). Следовательно, я впервые пытаюсь создать JAR из командной строки.
Я поместил следующее в файл с именем «manifest.txt»:
Permissions: all-permissions
Main-class: main
(Я считаю, что Main-class: main
необходим, и что DrJava до сих пор неявно делал это для меня.) И да, у меня есть новая строка после последней строки.
Когда я пытаюсь создать JAR с помощью командной строки в соответствии с...
jar -cvfm foo.jar manifest.txt main.class UUID.class etc.class
... Я получаю следующее исключение:
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:389)
at java.util.jar.Manifest.read(Manifest.java:182)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:151)
at sun.tools.jar.Main.main(Main.java:1149)
Я работаю на Microsoft Windows 7, как бы мало это ни стоило. Кроме того, я видел в Интернете примеры с 'cvfm
' и '-cvfm
'. Я пробовал оба, это, кажется, не имеет значения.
Я предполагаю, что проблема в моем файле manifest.txt, и я прочитал http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html, но я не вижу, что я делаю неправильно.
Я был бы совершенно доволен либо решением DrJava, либо решением командной строки.