2014-01-16 64 views
0

我正在使用反射來調用一個叫做Child的構造函數,它需要包:org.apache.commons.lang3.ArrayUtils 我已經將它添加到類路徑中,並且已經在其他地方使用它很好,但反思似乎沒有看到我的班級路徑。J2EE反射類

錯誤: java.lang.NoClassDefFoundError:組織/阿帕奇/公/ 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

您的代碼似乎沒問題。您是否提供了班級的完全限定名稱claz_str。 它應該是

claz_str = "com.package.Class"; 

希望解決您的問題。