解决方案:动态编译代码时的NoClassDefFoundError

时间:2012-10-03 00:45:41

标签: java reflection compilation

简单地说,我有这个工作:

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)来解决;

1 个答案:

答案 0 :(得分:1)

问题解决方案:

修改自定义类加载器以调用super.loadClass()。即使堆栈跟踪显然不会通过您的类加载器。