1

ホスト上で実行されている 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プログラムのそのようなメソッドを呼び出す方法がわかりません。

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

よろしくケビン

4

2 に答える 2

1

閉じる前に保存するシャットダウン フックをインストールする main メソッドを使用して、独自のクラスを作成します。次に、元のプログラムのメイン メソッドを呼び出します。これを jar に追加し、このクラスを使用してプログラムを起動します。

于 2014-08-16T12:51:06.413 に答える