简单地说,我有这个工作:
java -cp ".:bin:MyJar.jar" path.to.My.Main
但这在尝试加载动态编译的类时引发了异常:
java -jar MyJar.jar
失败是在
x = clazz.newInstance();
我得到一个“java.lang.NoClassDefFoundError:”的地方。我使用自定义类加载器加载了该类,因为该类是运行时编译的。发生异常的原因是因为 java 在尝试加载 clazz 中的导入时使用了单独的类加载器。这可以通过修改您的 ClassLoader extends URLClassLoader 来调用 super.loadClass(className, false); 来纠正。