Java Swing アプリケーションを作成していて、それを開発するために Eclipse または MyEclipse を使用しているとします。Web アプリケーションでは、コードを変更して保存すると、ant デプロイメント ファイルが変更されたファイルのデプロイメントを処理します。次に、Web ページを更新またはハード更新するだけで、そこに変更が表示されます。変更を加えるたびに最初からプログラムを閉じて開く必要がないように、Swing アプリケーションに対して同じことを行うことはできますか?
3 に答える
ホットコード交換が必要なので、そうは思いません! たぶん別のフレームワークを使用しています。
JVMが開始されると、クラスファイルが一度ロードされ、次のロード要求まで再ロードされないため、単純に行うことはできません。ただし、ClassLoader
変更したクラス ファイルを動的にロードするために使用できます。
次の 2 つの記事が役立つ場合があります。
最初のものは中国語ですが、コードと結果を見ることができます。GUI アプリケーションについては、2 番目の記事の方が役立つと思います。
MyEclipse では、実行モードではなくデバッグ モードでアプリケーションを起動でき、加えた変更はターゲット VM にプッシュされます。行った変更を置き換えることができない場合は、置き換えが失敗したことを知らせるダイアログが表示され、アプリケーションを再起動する必要があります。アプリケーションにブレークポイントを配置する必要はありません。デバッグ モードで開始するだけで十分です。
Guillaume が上で述べているように、通常、クラス構造への変更はホットシンクされませんが、既存のメソッド内の変更は問題ないはずです。
明らかに、ホットシンクされた変更が実行中のアプリケーションにどの程度影響を与えるかは、アプリケーションの設計によって異なります。