"无效的标题字段" (在manifest?中)创建JAR时

时间:2014-04-09 18:17:30

标签: java jar manifest drjava

我是一位经验丰富的开发人员,但只有很少的Java经验。在我的工作中,我继承了一个需要在沙箱外部运行的小型JNLP项目(all-permissions)。有了JDK 1.7.0_51,我想我们现在需要把#34; 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上运行,因为这可能是值得的。此外,对于它的价值,我已经在网上看到过{&#39; cvfm&#39;和&#39; -cvfm&#39;。我试过这两件事,但这似乎并不重要。

我认为问题出在我的manifest.txt中,而且我已经阅读了http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html,但我不知道自己可能做错了什么。

我对DrJava解决方案或命令行解决方案非常满意。

1 个答案:

答案 0 :(得分:1)

知道了。事实证明,当您安装JDK 1.7.0_51时(或者至少在我安装时),它不会更新系统路径。你必须手工编辑它。所以我真的在运行JDK 1.6.1_25 JAR而不是1.7.0_51,而且我猜测&#34; Permissions&#34;在清单中,JDK 1.6.1_25不知道。不是最清晰的错误消息,谷歌搜索没有导致答案。我希望这对其他人有所帮助:if&#34; Permissions&#34;在您的清单中,然后“无效的标题字段”可能意味着您的路径指向过旧的JDK版本。