我是一位经验丰富的开发人员,但几乎没有 Java 经验。在我的工作中,我继承了一个小型 JNLP 项目,该项目需要在沙箱 ( all-permissions
) 之外运行。对于 JDK 1.7.0_51,我认为我们现在还需要Permissions: all-permissions
在清单中添加“”。
到目前为止,我们一直在使用 DrJava 构建它,但是在 DrJava 菜单Project | Create Jar File from Project,Custom Manifest的复选框是“灰色的”(不可用)。因此,我第一次尝试从命令行构建 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 解决方案或命令行解决方案都非常满意。