2013-04-02 65 views
0

我試圖執行this jnlp應用程序。 不過,我不斷收到此安全異常:執行JNLP文件拋出一個AccessControlException

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內容」選項,但當我點擊「應用」時會重置它)。這顯示如下圖:

Security tab in the Java Control Panel

有另一種機制來繞過Java安全管理,並能夠執行JNLP應用程序?

UPDATE:

重新安裝的Java之後,我終於能夠改變在Java控制面板中的安全選項(我沒有做什麼特別的事情,從頭開始只是重新安裝)。不幸的是,當我執行jnlp application它靜靜地死去,沒有顯示任何錯誤。這個問題可能與我正在使用jdk 1.8(因爲jnlp應用程序需要javafx)並且它只是一個預覽版本(現在OSX似乎不喜歡很多Java)有關,它是我最好的猜測,但我不能完全確定。

+0

使用JaNeLA工具檢查文件 –

回答

0

爲可能的原因:

  1. 我聽說Java 7的Mac上仍不穩定。
  2. 默認情況下,JNLP文件在「沙箱」中運行,以防止惡意代碼對系統造成嚴重破壞。此沙箱限制對本地文件系統和本地網絡的訪問。我想,系統屬性也受到限制,它看起來像應用程序試圖寫入他們。要允許不受限制的訪問,您需要簽署JAR文件並配置JNLP文件<security><all-permissions/></security>
相關問題