Java 7中新的JNLP Missing项目警告有什么用?

从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重复几次。 但是,对于我们的大量库库来说,根本不会发生这种情况。 JaNeLa列出了一些优化机会(通过更改一些默认值),但没有一个看起来是相关的,并且没有找到实际的错误。

到目前为止,搜索网络让我空洞如何将JNLP文件格式变成Java 7认为值得的东西。 🙂

有关权限和代码库的说明,请参阅:xxx.jar的Missing Codebase清单属性 。 如果使用ant,则可以使用以下内容将条目添加到清单:

      

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

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

请参阅清单上的Java SE7技术说明 。

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

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

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

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

        
  3. 用我自己的密钥库签署我的jar子

  4. 在Java控制面板中导入我自己的证书(在Windows上)。

如果您正在使用maven,只需在插件配置中添加以下内容即可:

   all-permissions *  

取自这里的插件网站