web-dev-qa-db-ja.com

プログラムの実行中にJavaコードをデバッグ/変更する方法は?

ビデオ を見たところ、Minecraftの実行中にNotch(Minecraftの名声)がどのようにMinecraftをデバッグして変更しているかを示しました。彼はゲームを一時停止し、コードの何かを変更してから、プログラムの再起動を必要とせずに変更がすぐに反映されるゲームの一時停止を解除します。

これはどのように作動しますか?これを達成するためにどのようなテクニックが使用されていますか?

15
RoToRa

Javaはそのままでホットスワップを実行できます。 EclipseのようにIDE=を使用する場合、それはメソッド本体を変更するために機能します。他のコード変更を適用する場合は、ツールを使用することができます。JRebelは、より多くのケースをサポートする製品です。

私はその製品のマーケティングをしたくありませんが、個人的には他の選択肢は知りません。 JRebelのWebサイトには、Nice feature-comparison があります。

お役に立てば幸いです。

4
Regular John

これは hot code replace と呼ばれ、IDEがデバッグインターフェースを介してライブ実行中のコードを変更できるようにします。Java 1.4.1

ただし、(商用の)JRebel JVM拡張機能を使用しない限り、メソッド本体内の変更に限定されます。メソッドやクラスを追加/削除したり、署名を変更したりした場合は、JVMを再起動する必要があります。

4