0

我正在尝试执行这个jnlp 应用程序。但是,我不断收到此安全异常:

java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:399)
    at java.lang.Class.newInstance0(Class.java:370)
    at java.lang.Class.newInstance(Class.java:322)
    at com.sun.javafx.applet.FXApplet2.init(FXApplet2.java:63)
    at com.sun.deploy.uitoolkit.impl.fx.FXApplet2Adapter.init(FXApplet2Adapter.java:207)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.net.useSystemProxies" "write")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:364)
    at java.security.AccessController.checkPermission(AccessController.java:560)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.System.setProperty(System.java:783)
    at ensemble.Ensemble2.<clinit>(Ensemble2.java:77)
    ... 10 more

我尝试更改 Java 控制面板(OSX 10.8.3)中的安全设置,但它们似乎被禁用并且我无法修改它们(我确实可以检查“在浏览器中启用 Java 内容”选项,但它在我点击应用)。如下图所示:

Java 控制面板中的安全选项卡

是否有另一种机制可以绕过 Java 安全管理器并能够执行 jnlp 应用程序?

更新:

重新安装 Java 后,我终于能够更改 Java 控制面板中的安全选项(我没有做任何特别的事情,只是从头开始重新安装)。不幸的是,当我执行jnlp 应用程序时,它会默默地死掉而没有显示任何错误。这个问题可能与我使用的是 jdk 1.8(因为 jnlp 应用程序需要 javafx)并且它只是一个预览版本(并且 OSX 这些天似乎不太喜欢 Java...),它是我最好的猜测,但我不能完全确定。

4

1 回答 1

0

可能的原因:

  1. 我听说 Mac 上的 Java 7 仍然不稳定。
  2. 默认情况下,JNLP 文件在“沙箱”中运行,以防止恶意代码对您的系统造成严重破坏。此沙箱限制对本地文件系统和本地网络的访问。我想系统属性也受到限制,看起来应用程序正在尝试写入它们。要允许不受限制的访问,您需要对 JAR 文件进行签名并使用以下命令配置 JNLP 文件<security><all-permissions/></security>
于 2013-11-15T09:28:37.847 回答