【发布时间】:2014-05-23 03:22:51
【问题描述】:
我是一位经验丰富的开发人员,但几乎没有 Java 经验。在我的工作中,我继承了一个需要在沙箱之外运行的小型 JNLP 项目 (all-permissions)。对于 JDK 1.7.0_51,我认为我们现在还需要在清单中添加“Permissions: all-permissions”。
到目前为止,我们一直在使用 DrJava 构建它,但是在 DrJava 菜单 Project |从项目中创建 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 解决方案或命令行解决方案都非常满意。
【问题讨论】:
-
通常你得到这个是因为你的 f 和 m 标志被切换了,但你上面的情况似乎不是这样。
-
是的。我怀疑该清单文件实际上有问题,但由于这是我写的第一个文件,所以我有点不知所措。