我使用反射来调用一个名为Child的类的构造函数,它需要包: org.apache.commons.lang3.ArrayUtils我已经将它添加到类路径中,并一直在其他地方使用它,但反射似乎看不到我的类路径。
错误: java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils
我已经搜索并看到了很多关于类加载器的文章,但我仍然不理解这些。有没有人能解释一下这个问题,以及如何尽可能清楚地解决这个问题?
//main class:
try {
Class<?> claz = Class.forName(claz_str);
Parent p = (Parent) claz.getDeclaredConstructor(String.class, String[].class, String[].class).newInstance(elmName, nodes_arr, params_arr);
} catch (Exception e) {
throw new Exception(e.getCause());
}
// Child.class
import org.apache.commons.lang3.ArrayUtils;
public class Child extends Parent{
public Child(){
if(!ArrayUtils.contains(NUM_OF_PARAMS, 2)){ // <<====== run time error
System.out.println("stuff")
}
}
}发布于 2014-04-16 16:03:25
你的代码看起来没问题。您是否提供了您的类的完整限定名称作为claz_str。它应该是
claz_str = "com.package.Class";希望能解决你的问题。
https://stackoverflow.com/questions/21156598
复制相似问题