5

在我们从 Java 6 切换到 Java 7 后,我的 JNLP 仍然可以正常工作,但它现在会引发一系列错误,如下所示:

Missing Application-Name: manifest attribute for: http://blah.com/app.jar
Missing Permissions manifest attribute for: http://blah.com/app.jar
Missing Codebase manifest attribute for: http://blah.com/app.jar

它对我们的主 jar 重复几次,对我们的一个库 jar 重复几次。但是,对于我们的大部分库 jar,它根本不会发生。JaNeLa 列出了一些优化机会(通过更改一些默认值),但这些机会似乎都不相关,也没有发现实际错误。

到目前为止,在网上搜索让我对如何将 JNLP 文件格式变成 Java 7 认为有价值的东西一无所知。:-)

4

4 回答 4

6

有关权限和代码库的说明,请参阅Missing Codebase manifest attribute for:xxx.jar。如果您使用 ant,则可以使用以下命令将条目添加到清单中:

<manifest file="${source}/META-INF/MANIFEST.MF" mode="update">
  <attribute name="Permissions" value="all-permissions"/>
  <attribute name="Codebase" value="${jnlp.codebase}"/>
  <attribute name="Application-Name" value="${app.name}"/>
</manifest>

Java 7 update 45 打破了我的 Web Start SWT 应用程序可能还有一些有趣的信息

于 2013-10-18T14:52:38.813 回答
6

此问题影响 JNLP 和小程序。jar 文件需要在清单文件中具有权限属性。我相信其他错误不那么严重。最新的 JRE 向最终用户显示一条警告消息,指出从2014 年 1 月开始,最新的 JRE 将拒绝运行任何缺少Permissions属性的小程序或 JNLP jar 文件。

请参阅manifest 上的 Java SE7 技术说明

Java 教程中有一个关于修改清单文件的部分,但是按照@mth 的建议使用 ant 执行此操作听起来更简单。

于 2013-10-18T15:03:59.777 回答
1

我可以使用一种变通方法使自签名的 java web start 应用程序工作。即使我可以在控制台中看到警告,我也不会收到更多警告。我只需要:

  1. 在清单中添加“权限:所有权限”属性。

  2. 在 jnlp 文件中添加以下标记:

    <security>
       <all-permissions/>
    </security>
    
  3. 用我自己的密钥库签署我的罐子

  4. 在 Java 控制面板(在 Windows 上)中导入我自己的证书。
于 2014-01-07T14:29:26.563 回答
1

如果您使用的是 maven,只需在插件配置中添加类似这样的内容即可完成:

       <updateManifestEntries>
         <Permissions>all-permissions</Permissions>
         <Codebase>*</Codebase>
       </updateManifestEntries>

取自此处的插件站点

于 2014-06-16T21:32:01.903 回答