ホスト上で実行されている Java プログラム (GUI を使用) があります。実行時に、ユーザーはいくつかのデータ レコードを追加できます。プログラムはそれらで動作します。
後でシステムがシャットダウンするか、プログラムが SIGTERM によって閉じられる可能性があります。
残念ながら、ユーザーが「X」を使用して手動でプログラムを閉じた場合にのみ、プログラムはデータ レコードを保存するようです。
プログラムがSIGTERMによって閉じられると、データが失われる可能性があるという問題があります。残念ながら、著者に変更を依頼する連絡先の電子メール アドレスはありません。
多かれ少なかれ機能しているように見えた「jd gui」で逆コンパイルしようとしました。次に、シグナルハンドラーを追加して、「ウィンドウを閉じる」メソッドを呼び出すことができると思いました。
しかし、「jd gui」は次のようなコードを作成しました。
/* 110:269 */ if ((??? = Thread.currentThread().getContextClassLoader()) != null) {
/* 111:270 */ return ???;
また、ソースをコンパイルしようとすると、他の多くのエラーも発生します。
これは、jarファイルが何らかのツールによって難読化されているためだと思います。残念ながら、逆コンパイルされたコードは機能せず、JFrame でファイルを再コンパイルできません。
簡単に言えば、SIGTERMを処理してから、メインフレーム(唯一のJFrame)のJFrame「closeメソッド」(またはその呼び出し方法)を呼び出す「ラッパープログラム」を作成することは可能ですか?
外部で実行中のJavaプログラムのそのようなメソッドを呼び出す方法がわかりません。
どうもありがとうございました。
よろしくケビン