简单地说,我有这个工作:
java -cp ".:bin:MyJar.jar" path.to.My.Main
但是在尝试加载动态编译的类时会引发异常:
java -jar MyJar.jar
失败发生在
x = clazz.newInstance();
我得到一个“java.lang.NoClassDefFoundError:”。我使用自定义类加载器加载了类,因为该类是运行时编译的。发生异常的原因是因为java在尝试加载clazz中的导入时使用了单独的类加载器。这可以通过修改ClassLoader扩展URLClassLoader来调整super.loadClass(className,false)来解决;
答案 0 :(得分:1)
问题解决方案:
修改自定义类加载器以调用super.loadClass()。即使堆栈跟踪显然不会通过您的类加载器。