難しい質問があります。
私のJavaプログラムはループで次のようなことをしています:
ループ:
コンパイルされた Java クラスを含む外部ファイルを byte[] 配列に読み込みます。
自分のクラスローダーの新しいインスタンスを作成します。
読み込まれたファイルからクラスローダーのこのインスタンスへの setbytes。
作成されたクラスローダーを使用して、外部ファイルからクラスのオブジェクトの新しいインスタンスを作成します。
作成されたオブジェクトの任意のメソッドを呼び出します。
そして、問題はどこにありますか。
このプログラムをデバッグモードで実行すると、期待どおりに動作するため、外部ファイルが変更された場合、クラスローダーは新しいバージョンのクラスをロードして新しいバージョンを実行します (ファイルが変更されていない場合は、もちろん古いバージョンもロードします)。
しかし、このプログラムをデバッグモードで実行しないと、読み取ったファイルが変更されているにもかかわらず、常に古いバージョンが実行されます。
クラスローディングの問題と JVM の動作についてより深い知識を持っている人が、この動作を説明してくれるかもしれません。