我试图运行一个简单的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。
答案 0 :(得分:2)
从java 7u45开始,从jnlp运行时无法读取系统属性。 Oracle基本上破坏了javaws
。如果你正在编写一个新的应用程序,我建议远离java webstart。它已经坏了,他们只是通过强制破坏你的应用程序的安全更新来让它变得更糟。
话虽如此,此问题的一个部分解决方法是使用jnlp.
为所有属性添加前缀。因此,您必须重命名您的财产jnlp.jna.debug_load
。如果它是你正在使用的第三方库/罐子的财产,那你就不走运了。