[英]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.