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";

Надеюсь решить вашу проблему.

Другие вопросы по тегам