执行jnlp文件时出现SecurityException错误(主jar包缺少必需的权限清单属性)

32

操作系统:Windows 7 64位

Java版本:jdk1.7.0_51

我有一个jnlp文件。当我双击它时,会出现以下异常:

Application Error: Unable to launch the application
Exception: java.lang.SecurityException: Missing required Permissions manifest attribute in main jar

https://dev59.com/G1TTa4cB1Zd3GeqPpyzG - varun
这是你自己的应用程序还是由其他人提供的? - Andrew Thompson
@varun:你的链接已经过时了1.7.0_51-b13: 安全滑块的更改 - moskito-x
这也可能会有所帮助: https://dev59.com/2GIk5IYBdhLWcg3wPcCB - user5516625
这也许会有所帮助: https://dev59.com/2GIk5IYBdhLWcg3wPcCB - user5516625
2个回答

49

JAR文件清单安全属性

JAR文件清单包含关于JAR文件内容的信息,包括安全和配置信息。

在签署JAR文件之前将属性添加到清单中。
有关向JAR清单文件添加属性的信息,请参见Java教程中的修改清单文件

Permissions属性

Permissions属性用于验证RIA运行时请求的权限级别是否与创建JAR文件时设置的权限级别匹配。

使用此属性可帮助防止某人重新部署使用您的证书签名并在不同特权级别下运行的应用程序。将此属性设置为以下值之一:

  • sandbox - 在安全沙箱中运行,不需要额外的权限。

  • all-permissions - 需要访问用户的系统资源。

安全滑块更改:

此版本(7u51)中包含了对安全滑块的以下更改:

  • 在高安全设置下阻止自签名和未签名小程序
  • 在高安全设置下需要Permissions属性
  • 在中等安全设置下警告缺少Permissions属性的用户

有关更多信息,请参见Java控制面板文档。

输入图像描述

示例 MANIFEST.MF

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_51-b13 (Oracle Corporation)
创建者: 1.7.0_51-b13 (Oracle Corporation)

Trusted-Only: true
仅受信任的: true

Class-Path: lib/plugin.jar
类路径: lib/plugin.jar

Permissions: sandbox
权限: 沙盒

Codebase: http://myweb.de http://www.myweb.de
代码库: http://myweb.de http://www.myweb.de

Application-Name: summary-applet
应用名称: summary-applet


2
我的问题已经通过“编辑站点列表”得到了解决。感谢moskito-x。 - Ripon Al Wasim
@RiponAlWasim:跟上潮流很难。Oracle一再更改安全设置。 - moskito-x
首先,打开Java控制面板(在Windows上点击开始,然后配置Java)。 - Per G
在Java 8下,我无法运行我的Java Web Start应用程序。我不得不在jnlp文件和清单中设置相同的权限级别(例如- Permissions:sandbox)。现在它可以正常工作了。 - null
我有一个问题,你愿意帮助我吗:http://stackoverflow.com/questions/38356087/java-web-star-java-lang-nullpointerexception-jnlpxargs-execprogram - Fernando Pie

4
如果您希望将此设置全局应用于计算机的所有用户,可以创建以下目录和文件结构:
mkdir %windir%\Sun\Java\Deployment

创建一个名为 deployment.config 的文件,并将以下内容添加到文件中:
deployment.system.config=file:///c:/windows/Sun/Java/Deployment/deployment.properties
deployment.system.config.mandatory=TRUE

创建一个名为deployment.properties的文件。
deployment.user.security.exception.sites=C\:/WINDOWS/Sun/Java/Deployment/exception.sites

创建一个名为 exception.sites 的文件。
http://example1.com
http://example2.com/path/to/specific/directory/

参考资料 https://blogs.oracle.com/java-platform-group/entry/upcoming_exception_site_list_in

这是一个关于 Java 平台的最新消息,该平台将于不久的将来推出异常站点列表。此列表将包含所有 Java 虚拟机可以在其上生成异常的站点。它将有助于开发人员分析和解决程序中的错误,并确保他们能够及时处理这些问题。

异常网站列表在我的控制面板安全选项卡中消失了。但是这种方法仍然有效! - Professor Falken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接