2

Oracle の deployApplet.js ライブラリを使用して自己署名アプレットを実行しています。(生成されたhtmlを確認すると、appletタグが使用されています-Oracleのデプロイメントチュートリアルに従ってJNLPファイルも使用しています)。

この問題は、コンピュータへのアクセス許可を求めるダイアログがユーザーに表示されたときに発生します。[許可] をクリックすると、すべて問題ありません。[拒否] をクリックすると、Java コンソールに次の例外が表示されます。

ExitException[ 4]java.lang.RuntimeException: exit(-1)
    at com.sun.javaws.Main.systemExit(Main.java:1316)
    at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(AppPolicy.java:283)
    at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(LaunchDownload.java:1825)
    at com.sun.javaws.LaunchDownload.checkSignedResources(LaunchDownload.java:1508)
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(JNLP2Manager.java:1161)
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(JNLP2Manager.java:473)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1495)
    at java.lang.Thread.run(Thread.java:680)
Exception: ExitException[ 4]java.lang.RuntimeException: exit(-1)
java.lang.NullPointerException
    at sun.plugin.util.ErrorPanel.deniedCertificateFailure(ErrorPanel.java:334)
    at sun.plugin.util.ErrorPanel.<init>(ErrorPanel.java:61)
    at sun.plugin.util.GrayBoxPanel.setError(GrayBoxPanel.java:104)
    at sun.plugin.util.GrayBoxPainter.paintGrayBox(GrayBoxPainter.java:473)
    at sun.plugin.util.GrayBoxPainter$4.run(GrayBoxPainter.java:411)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:643)
    at java.awt.EventQueue$1.run(EventQueue.java:641)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:652)
    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)

この後ブラウザがハングするので、手動で Java アプレット プロセスを強制終了するか、ブラウザを再起動する必要があります。スタック トレースに基づいて、アプレットでいくつかの静的イニシャライザ デバッグ ステップを実行した結果、例外がスローされる前にアプレット内のコードが実行されたようには見えません。

ユーザーが [拒否] をクリックしたときに正常に回復する方法はありますか? 理想的には、アプレットと JVM は問題なく終了するだけですが、私はブラウザがハングしたままにならなければ何でも受け入れます。

編集:

例外がスローされる前の追加のログ情報:

security: Showing MacOSXTrustSiteDialog
security: User permitted app to continue without priviledges
security: User has denied the privileges to the code
security: Adding certificate in Deployment denied certificate store
security: Added certificate in Deployment denied certificate store
security: We were not granted permission, exiting
basic: exception: exit(-1).
Java Plug-in 1.6.0_31
Using JRE version 1.6.0_31-b04-415-11M3646 Java HotSpot(TM) 64-Bit Server VM
4

0 に答える 0