J2EE класс отражения
Я использую рефлексию для вызова конструктора класса с именем 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")
}
}
}
1 ответ
Ваш код, кажется, в порядке. Предоставляете ли вы полное название вашего класса как claz_str
, Так должно быть
claz_str = "com.package.Class";
Надеюсь решить вашу проблему.