私はJavaCompilerを使用してクラスのダイナミクスを作成します。このクラスは、指定されたインタフェースを実装します。 JavaCompilerのために、コンパイラが自分のクラスをコンパイルできるように正しいクラスパスを作成することができます。
SecureClassLoaderは依存インタフェースを見つけません
return new SecureClassLoader() {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte[] b = javaClassObject.getBytes();
return super.defineClass(name, javaClassObject.getBytes(), 0, b.length);
}
};
は、コンパイル済みのクラスをロードするが、私はloadClassメソッドを呼び出すときに、私はこのエラーを取得: NoClassDefFoundErrorが:refac/IBewertungsAlgorithmus(間違った名前を
//creating the classpath from parent application to be same as the runtime's
ClassLoader dummyc=getClass().getClassLoader();
URLClassLoader urlClassLoader=(URLClassLoader)dummyc;
URL[] urls=urlClassLoader.getURLs();
String classpath = "";
for (URL i : urls) {
classpath += ";" + i.getPath().substring(1);
}
私は匿名のクラスローダを使用します:refac/MyClass)
クラスローダーのコンパイラタスクに設定したのと同じクラスパスを設定することはできますか?