什么';Java 7中的新JNLP缺少项警告?

什么';Java 7中的新JNLP缺少项警告?,java,security,java-web-start,jnlp,Java,Security,Java Web Start,Jnlp,从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

从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列出了一些优化机会(通过更改一些默认值),但这些机会似乎都不相关,也没有发现实际的错误

到目前为止,在搜索web时,我对如何将JNLP文件格式转换为Java 7认为有价值的格式一无所获。:-)

有关权限和代码库的说明,请参阅。如果使用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>


可能还有一些有趣的信息

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


Java教程中有一节介绍了如何使用ant,正如@mth所建议的那样,这听起来更简单。

我可以通过一种变通方法使自签名Java web start应用程序工作。 尽管我可以在控制台中看到警告,但我没有收到更多的警告。 我所需要的只是:

  • 在清单中添加“权限:所有权限”属性

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

    <security>
       <all-permissions/>
    </security>
    
    
    
  • 用我自己的密钥库为我的JAR签名

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

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

           <updateManifestEntries>
             <Permissions>all-permissions</Permissions>
             <Codebase>*</Codebase>
           </updateManifestEntries>
    
    
    所有权限
    *
    

    摘自插件站点

    Ahhh,就我而言,这是由于使用了Netbeans。我也误解了它的要求。我一直在旋转JNLP权限属性,但没有任何更改。:-)因此,我想我有两种选择,一种是玩弄build.xml(考虑到我所处的特定环境,这似乎很危险),另一种是等待并希望Netbeans 7.3.2推出并添加这种支持。不幸的是,它生成的构建完全不可用,因为它们导致“DeployManifestChecker.verifyCodebase”中出现NumberFormatException-(Netbeans 7.4中的一些默认值发生了更改。我可以通过将其切换为通用代码库模式来绕过古怪的代码库错误。但是,清单错误仍在继续。现在我可以通过“jar ufm”(和代码签名脚本)自定义注入所需的清单条目)我希望下一个版本的Netbeans能够修复7.4在清单和某些证书类型上的问题。更新:Netbeans 8还没有完全解决这个问题。可能是8.1…在那之前,我正在使用一个自定义的、后期构建的脚本将清单条目塞进.jar中。很好的信息测试,所以我会投票。这对我的特殊情况没有帮助,尽管每次应用程序更改时将我自己的证书导入每个客户端是不可行的。在我工作的公司,我们已经创建了我们的证书(有罪10年…)。然后我们继续修改应用程序。。但证书是相同的点,我可以修改构建脚本以重复使用长期证书,而不是当前的过程。现在,我们在每个构建上创建一个新的证书,有效期仅为6个月。我们每次使用jenkins构建应用程序时都会运行一个jar签名者脚本。