我使用反射来调用名为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")
}
}
}
答案 0 :(得分:0)
您的代码似乎没问题。您是否将{class 1}}作为班级的完全符合条件的名称。 它应该是
claz_str
希望解决你的问题。