Java.util.PropertyPermission失败

时间:2014-11-12 20:14:38

标签: java security java-web-start

我试图运行一个简单的Java Web Start App。我在NetBeans中编写了代码,并使用jar导出的.jnlp文件。最终我计划从windows注册表中读取代码并使用该数据,但是现在我所做的就是创建一个String然后调用System.out.println(strName);我正在使用战略概述here。当我下载并运行.jnlp时,我得到以下异常:

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "jna.debug_load" "read")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at com.sun.javaws.security.JavaWebStartSecurity.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at java.lang.Boolean.getBoolean(Unknown Source)
    at com.sun.jna.Native.<clinit>(Native.java:95)
    at com.sun.jna.Pointer.<clinit>(Pointer.java:41)
    at com.sun.jna.platform.win32.WinReg$HKEY.<init>(WinReg.java:32)
    at com.sun.jna.platform.win32.WinReg.<clinit>(WinReg.java:61)
    at cvbxtractor.CvbXtractor.main(CvbXtractor.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我已尝试将permission java.util.PropertyPermission "jna.debug_load", "read";添加到我的java.policy文件中,我尝试签名并撤销其可能正在使用的jars,并确保我的.jnlp具有< / p>

 <security>
      <all-permissions/>
 </security>

排在其中,但没有人帮忙。我确定我在某个地方错过了一些安全切换,如果这很容易请原谅我,这是我的第一个Java Web Start App。

1 个答案:

答案 0 :(得分:2)

从java 7u45开始,从jnlp运行时无法读取系统属性。 Oracle基本上破坏了javaws。如果你正在编写一个新的应用程序,我建议远离java webstart。它已经坏了,他们只是通过强制破坏你的应用程序的安全更新来让它变得更糟。

话虽如此,此问题的一个部分解决方法是使用jnlp.为所有属性添加前缀。因此,您必须重命名您的财产jnlp.jna.debug_load。如果它是你正在使用的第三方库/罐子的财产,那你就不走运了。