2016-04-08 33 views
0

htmlアプレットタグを使用したアプレットの起動を、アプレット記述子を使用したjnlpデプロイメントに移行しました。Java JNLPアプレットが終了しない

アプレットソリューションでは、ブラウザウィンドウを閉じると、Javaアプリケーションが終了します。

JNLPソリューションでは、ウィンドウを閉じるとJavaアプリケーションが停止しません。 そして、例外が発生します

Plugin2Manager calling stopFailed() because of exception during AppContext.dispose() 
Plugin2Manager calling stopFailed() because of displayable window   javax.swing.JFrame[frame0,240,1,1018x647,invalid,hidden,layout=java.awt.BorderLayout,title=TimeCheck,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,32,1012x612,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] 
Exception in thread "Thread-19" java.lang.NullPointerException 
    at sun.plugin2.applet.Plugin2Manager.destroyAppContext(Unknown Source) 
    at sun.plugin2.applet.JNLP2Manager.destroyAppContext(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.cleanupAppContext(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.shutdownAppContext(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.stop(Unknown Source) 
    at sun.plugin2.applet.viewer.JNLP2Viewer$2$1.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

はどうもありがとうございました。

答えて

0

解決方法は、TopLevelフレームにWindowListenerを追加することです。 TopLevel Frameを取得したら、Resizableを設定することもできます。

.... 
    while (parent.getParent() != null) 
     parent = parent.getParent(); 
     if (parent instanceof Frame) { 
      ((Frame) parent).setResizable(true); 
      ((Frame) parent).addWindowListener(this); 
    } 
    .... 

closeイベントのイベントハンドラは、System.exit()を実行します。

public void windowClosed(WindowEvent e) { 
    // TODO Auto-generated method stub 
    System.exit(0); 
} 
関連する問題