2011-12-30 74 views
0

我已經構建了一個由Java Web Start啓動的Java應用程序。找出引起什麼的原因java.security.AccessControlException

在應用程序的最後階段,將文件上載到我們的服務器。

在Mac OSX最近,我開始漸漸崩潰(10.6)。

我得到這個從日誌:

MRJ Plugin for Mac OS X v1.0.1 
[starting up Java Applet Security @ Thu Apr 14 17:58:16 CEST 2011] 
Thu Apr 14 17:58:20 CEST 2011 JEP creating applet ScratchApplet (http://scratch.mit.edu/static/misc/) 
<<< ProxyClassLoader: defined LiveConnectProxy class. >>> 
<<< Here're the permissions you've got: >>> 
<<< [email protected] (
(java.net.SocketPermission scratch.mit.edu connect,accept,resolve) 
) 
>>> 
Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at sun.applet.AppletSecurity.checkAccess(AppletSecurity.java:235) 
    at sun.plugin.security.ActivatorSecurityManager.checkAccess(ActivatorSecurityManager.java:155) 
    at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299) 
    at java.lang.Thread.init(Thread.java:336) 
    at java.lang.Thread.<init>(Thread.java:564) 
    at jep.AppletFrame.destroyAppletDirectly1(Unknown Source) 
    at jep.AppletFrame$Destroy1.run(Unknown Source) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) 
    at java.awt.EventQueue.access$000(EventQueue.java:86) 
    at java.awt.EventQueue$1.run(EventQueue.java:639) 
    at java.awt.EventQueue$1.run(EventQueue.java:637) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
    at java.awt.EventQueue$2.run(EventQueue.java:653) 
    at java.awt.EventQueue$2.run(EventQueue.java:651) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:650) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

這告訴,這是一個安全問題。但奇怪的是,我沒有問題在Windows上,這是存在於jnlp文件:

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

它是一個簽名的應用程序。

我如何瞭解更多關於在exeption被拋出?

我也有故障轉儲可用的,但是我不知道該如何來解讀它。

+0

確保在使用驗證JNLP [JaNeLA](http://pscode.org/janela/)。該應用還有什麼?這是否需要信任? – 2011-12-31 04:10:03

+0

它是一個寫入文件並將其發送到我們的服務器的屏幕錄像機 – 2011-12-31 13:24:45

回答

1

檢查,看看你的應用程序是正確的簽名。您可以使用以下命令行來測試jar文件:

jarsigner -verify <jarfile> 

嘗試在Windows和Mac上。比較輸出以查看它是否在Mac上對Windows進行驗證。您需要在JVM的cacerts文件中擁有證書頒發機構的證書。由於Apple負責在Mac上交付Java,因此該文件可能不包含與Windows相同的證書頒發機構,因爲這是由Oracle分發的。據說在不久的將來,甲骨文將在Mac上提供Java,但這可能是問題所在。基本上,您的應用程序沒有您所請求的權限,因爲您的例外說。

相關問題