缺少Codebase清单属性:xxx.jar

当我从jnlp启动应用程序时,我收到消息

Missing Codebase manifest attribute for:xxx.jar

这是什么意思?

刚刚在将JRE更新到1.7u25后运行内部应用程序时遇到了这个问题。 出现警告是因为1.7u25中引入了一个新的安全function,以防止未经授权的代码重用。 在我的情况下,我还看到了一个对话框,要求我确认我希望应用程序可以访问我的PC。

如果您有权访问jar文件,请为其添加两个属性: PermissionsCodebase 。 您需要确定应用程序是否需要访问PC上的所有内容,在这种情况下,您将使用Permissions属性的值all-permissions 。 否则,使用sandbox ,JRE将限制代码在PC上的访问级别。 Codebase可能需要与jnlp文件的代码库相同,除非从不同的URL下载该jar文件,在这种情况下,它需要是该URL。

参考: Oracle的Java 7文档

按照Peter的回答,这就是你如何以自动方式解决问题,以防你使用Netbeans和JavaFX。

Netbeans 7.3.1仍然没有修复这个“错误”(它不会为你的Manifest添加代码库和权限)。 如果要使用Netbeans构建项目而不是手动添加缺少的属性(并重新签名.jar),则可以编辑build.xml并添加以下ANT目标和宏:

                                       

之后,您只需将manifest.custom.codebase=添加到project.properties即可。 例如: manifest.custom.codebase=localhost

注意:此代码适用于使用Netbeans默认ANT构建过程的JavaFX应用程序。 如果不是这种情况,你需要相应地更新它 – 这需要对第一个目标( ,属性名称和检查permissions-elevated的条件 – permissions-elevated财产。

请参阅有关您提到的错误的详细说明。 http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html

这是我发现的:

原因

从Java 7 Update 51开始,Java增强了安全模型,使用户系统不易受外部攻击。 新版本的Java不允许用户运行未签名(未签名),自签名(未由受信任机构签名)和缺少权限属性的应用程序的应用程序。

我在TopCoder Arena发布时遇到了问题。 可以使用以下链接轻松删除它:

http://www.java.com/en/download/help/java_blocked.xml