私はクラスのデモを持っています:
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
実行時にメソッドmainを呼び出します。
Class cls = Class.forName(packClassName);
Method thisMethod = cls.getMethod("main", String[].class);
thisMethod.setAccessible(true);
thisMethod.invoke(cls.newInstance(), (Object)str);
「HelloWorld!」と印刷されます メッセージ。しばらくして、デモクラスの印刷メッセージを「HelloWorld!」ではなく「Hellojava」のように変更しました。そして、Demoクラスを再度コンパイルします。ここでも、上記と同じコードでメソッドを呼び出しますが、更新されたメッセージを取得できません。「HelloWorld!」を印刷します。更新されたメッセージを印刷するにはどうすればよいですか。私を助けてください。
今、私はちょうど2つのことをしました:1。別の新しいClassLoaderインスタンスをインスタンス化します
cls = Class.forName("anotherClassName");
- クラスファイルを削除して再コンパイルします
boolean success = (new File ("filename")).delete();
しかし、それでも更新されたメッセージを取得していません...どうすればよいですか?