32ビットWin(XPおよびWin7)およびEclipse(インディゴ)で開発/テストしたアプリケーションがあります。「ファイル」->「エクスポート」->「実行可能Jar」を使用してアプリケーションをデプロイします(「必要なライブラリーを生成されたJARにパッケージ化」します)。そこから、実行可能ファイルにラップします。
私は最近、64ビットWin7(32ビットWinは正常に動作します)ではアプリケーションを閉じることができないことに気付きました(「右上のX」でもalt+でも)。私は64ビットWin7でアラウンドをプレイし始めましたが、Eclipseから開始すると、アプリケーションを閉じることができることがわかりました。実行可能なjarにエクスポートした後、閉じることができません。私のアプリケーションの他のすべての部分は正常に動作します(64ビットWin7でも)。F4
私は次のようにシャットダウンフックを実行しています:
// initialize JFrame frame;
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
closeApplication();
}
});
frame.setVisible(true);
public void closeApplication() {
while (ConnectionManager.isConnected())
try {
ThreadManager.addMeasRequestPriority(eMeasRequest.DISCONNECT);
Thread.sleep(100);
} catch (InterruptedException e) {}
ConfigurationManager.saveToXML(new File("ressources/settings/startup.xml"));
System.exit(0);
}
GUIが切断されていることに気づきましたが、それ以上は何もありません(ただし、これcloseApplication()
は入力されていることを意味します)。問題はSystem.out
、Eclipseで実行していないときは時間がないため、例外があるかどうか、または何が起こっているのかがわからないことです。私がどのようにして問題を見つけることができるか(またはすでに問題を知っているか)についてあなたは考えを持っていますか?
可能な候補:
- System.exit(0)は、64ビットでは異なる動作 をします(なぜそうなるので、代替手段がありますか?)
- 指定されたファイルを作成/書き込みできません
startup.xml
(どうすれば確認できますか?) - 私の64ビットWin7ラップトップ内の小さな小人は、マザーボード上のいくつかのものを彼の鉄のハンマーで短絡させ、アプリケーションが閉じるのを防ぎます(どうすれば彼を取り除くことができますか?)
- 他の
ここで何が起こっているのか、またはどのように詳細を調べていくのかを教えていただければ幸いです。
編集:あなたの速い返事をありがとう。次の例外が発生することがわかりました。
java.io.FileNotFoundException: ressources\settings\startupPlot0.apph (Access denied)
at java.io.FileOutputStream.open(Native Method)
...
しかし、これはどのようになりますか?このファイルは間違いなく存在し、64ビット以外のWinで書き込まれます。また、同じディレクトリに、そのファイルで例外が発生する直前に書き込まれる他のファイルがあります。それらは機能します(私はそれらをチェックしました)。唯一の違い:他のファイルには、他のファイルにはを使用し、このファイルにはを使用しnew OutputStreamWriter(new FileOutputStream(File file))
ますnew DataOutputStream(new FileOutputStream(File file))
。