このテストケースでは、特定のクラスローダーインスタンスによってクラスA
をロードしています。ただし、A.class.getClassLoader()
はそのクラスローダーを取得しません。A.class.getClassLoader()がloader.loadClass( "A")によって使用されるローダーを返さない理由
class A{
static {
ClassLoader loader = A.class.getClassLoader();
System.out.println("A.<cinit>: " + loader);
}
}
class ClassLoaderGw extends ClassLoader { }
public class App {
public static void main(String [] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
ClassLoaderGw loader = new ClassLoaderGw();
System.out.println("Main: " + loader);
Class<?> klass = loader.loadClass("A");
Object obj = klass.newInstance();
}
}
そして、これはクラスApp
を実行しているの出力である:これはテストケースである
Main: [email protected]
A.<cinit>: [email protected]
私はクラスA
の静的コンストラクタ内GwClassLoader
のインスタンスを取得できますか?
解決済み。 'defineClass'を呼び出すことで、意図したクラスの' classloader'になります。ここでは、['ClassLoaderGw'の新しい実装です(https://gist.github.com/fmcarvalho/1fecd5310f74c1153154886202a1e133#file-classloadergw-java) –