1
私のカスタムクラスローダークラスは次のとおりです。私はこれを以下のjavaargsを持つデフォルトクラスローダーとして設定します。カスタムクラスローダーを使用してロードされたリロードクラス
-Djava.system.class.loader=MyCustomClassLoader
import java.io.*;
public class MyCustomClassLoader extends ClassLoader {
public MyCustomClassLoader() { super(); }
public MyCustomClassLoader(ClassLoader parent) { super(parent); }
protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
Class c = super.loadClass(name, resolve);
System.out.println("name: " + name + ", class: " + c);
return c;
}
}
この時点では、サーバーを起動すると、すべてのクラスに上記のカスタムクラスローダークラスがロードされます。必要に応じて、特定のパッケージ(com.testなど)の一部であるクラスのクラス定義を更新/再読み込みしたいと考えています。どうしたらいいですか?
既存の 'URLClassLoader'よりも' MyClassLoader'の利点はありません。答えのポイントは、1つのクラスローダー内のリロードクラスが機能しないため、2つのクラスローダーインスタンスを作成することです。冗長クラスローダの実装で関連する点から注意をそらすのではなく、それに焦点を当てることをお勧めします。 – Holger