Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.SecurityException:请求仅在所有权限中运行JAR清单_Java_Security_Manifest_Java Web Start_Manifest.mf - Fatal编程技术网

java.lang.SecurityException:请求仅在所有权限中运行JAR清单

java.lang.SecurityException:请求仅在所有权限中运行JAR清单,java,security,manifest,java-web-start,manifest.mf,Java,Security,Manifest,Java Web Start,Manifest.mf,我们有一个Swing应用程序,它通过JavaWebStart下载并在本地机器上运行。但在自动启动下载的JNLP文件后,会发生错误: 应用程序被安全设置阻止名称:Somename位置: Java安全设置阻止了这种情况 应用程序无法运行。您可以在Java中更改此行为 控制面板 此URL已添加到异常站点列表中 Java控制台此时不工作,但如果在控制台中通过命令启动此JNLP文件: javaws -verbose filename.jnlp 我们在跟踪中遇到了一些异常: java.lang.Secur

我们有一个Swing应用程序,它通过JavaWebStart下载并在本地机器上运行。但在自动启动下载的JNLP文件后,会发生错误:

应用程序被安全设置阻止名称:Somename位置: Java安全设置阻止了这种情况 应用程序无法运行。您可以在Java中更改此行为 控制面板

此URL已添加到异常站点列表中

Java控制台此时不工作,但如果在控制台中通过命令启动此JNLP文件:

javaws -verbose filename.jnlp
我们在跟踪中遇到了一些异常:

java.lang.SecurityException: JAR manifest requested to run in all-permissons only: http://localhost:8080/path/to/jar/jarname.jar
    at com.sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
    at com.sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
    at com.sun.deploy.security.SandboxSecurity.isPermissionGranted(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
该Jar文件的清单:

Manifest-Version: 1.0
version-time: 1926
version-number: 01.030.02.02
Ant-Version: Apache Ant 1.9.4
Application-Name: Somename
Permissions: all-permissions
version-date: March 4 2015
Created-By: 1.7.0_75-b13 (Oracle Corporation)
debug: on
Codebase: *
JNLP文件的结构:


标题
公司
描述
-java.naming.provider.url=someurl
-java.naming.factory.initial=someinitial
-java.naming.security.principal=login
-java.naming.security.credentials=密码
-locatorConfig=server
-冗长的
Java版本:1.7.0_75

出现异常的原因是什么?为什么应用程序无法启动?

所有权限设置意味着应用程序需要访问一些系统资源

在这种情况下,Oracle说您必须在JNLP和清单文件中定义相同的权限。您应该看看JNLP文件的“security”元素:


您可能必须更改Java安全设置。在Windows下,Java控制面板上应该有一个图标。关于Linux,您可以在JDK的bin目录中运行“ControlPanel”应用程序


在“安全”选项卡下,可以添加关于“localhost”的异常。这将帮助您解决问题。

您的问题是什么?假设应用程序需要访问环境变量的原因是什么?@MarkusKull我误读了Oracle的主题。它说的是“系统资源”。若我正确理解你们的建议,在旧版本的JNLP文件中,字符串被定位。结果是一样的。我添加了更多信息来帮助您解决问题。@FabienThouraud事实上,您是对的。在解决了java.policy的一些问题之后,我在JNLP文件和该文件的所有扩展名中添加了这些字符串。现在应用程序毫无例外地启动。非常感谢。