簡體   English   中英

使用Class.forName(..)時的Junit的ClassNotFoundException。getInstance而new()工作正常

[英]ClassNotFoundException with Junit when using Class.forName(..).getInstance while new() works fine

使用junit運行測試時,我得到ClassNotFoundException

我有一堆測試Class Main的測試用例。 Main類有一個方法,它接受表示數據類型的字符串,並使用Class.forName( argument ).newInstance()在內部構建該類型的實例。 現在,當我手動測試時,方法本身工作正常。 但是在使用junit運行測試用例時,我得到傳入的數據類型的ClassNotFoundException (在方法中)。

然后我添加了一行:新的MyDataType到正在測試的方法。 奇怪的是,當我通過Class.forName( MyDataType ).newInstance()創建實例的成功行失敗時,操作成功。

Class Main{

public void someMethod( String dataType ){
new MyDataType();   // suceeds
Class.forName( dataType ).newInstance(); // got Exception when dataType = "MyDataType"
}
}

為什么是這樣? 當我用Google搜索時,我發現了許多答案,表明MyDataType.class可能不在classpath 我不認為這是因為新的MyDataType()運行正常。

我的運行時和構建時類路徑包括包含所需類的jar。

嘗試提供該方法所需的完整限定名稱:

Class.forName("com.package.where.class.exists.MyDataType").newInstance();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM