我使用 JavaCompiler 创建一个动态类。此类实现给定的接口。对于 JavaCompiler,我可以创建一个正确的类路径,以便编译器可以编译我的类。
//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);
}
我使用匿名类加载器:
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 (wrong name: refac/MyClass)
是否可以为类加载器的编译器任务设置相同的类路径?