2011-12-30 38 views
0

Java Web Startによって起動されるJavaアプリケーションを構築しました。java.security.AccessControlExceptionの原因を調べる

アプリケーションの最終段階で、Googleのサーバーにファイルをアップロードします。

最近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) 

これは、セキュリティ上の問題だと伝えます。

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

その署名されたアプリケーション:しかし、奇妙なことは、私は窓に問題がないと、これはJNLPファイル内に存在していることです。

例外がどこにスローされるのかについてもっと知るにはどうすればよいですか?

私もクラッシュダンプを利用できますが、それをどのように解釈するかはわかりません。

+0

[JaNeLA](http://pscode.org/janela/)を使用してJNLPを検証してください。それ以外のアプリは何ですか?信用が必要ですか? –

+0

ファイルを書き込んでサーバーに送信するスクリーンレコーダー –

答えて

1

アプリが正しく署名されているかどうかを確認してください。あなたは、次のコマンドラインを使用してjarファイルをテストすることができます。

jarsigner -verify <jarfile> 

WindowsとMacの両方でそれを試してみてください。出力を比較して、Windows上でMacと同じものを検証しているかどうかを確認します。 JVMのcacertsファイルには、認証局の証明書が必要です。 Mac上でJavaを配布するのはAppleが担当しているので、ファイルはWindowsと同じ認証機関を含んでいない可能性があります.Oracleによって配布されるためです。おそらく近い将来、OracleはMacでJavaを提供するだろうが、それが問題になる可能性がある。基本的に、あなたのアプリケーションには、あなたの例外が言うように要求した権限がありません。

関連する問題