3

我在ClassNotFoundException用junit运行测试时得到:

我有一堆测试 Class Main 的测试用例。Main 类有一个方法,该方法接受一个表示数据类型的字符串,并在内部使用Class.forName( argument ).newInstance(). 现在,当我手动测试时,这些方法本身可以正常工作。但是在使用 junit 运行测试用例时,我得到ClassNotFoundException(在方法中)传入的数据类型。

然后我在正在测试的方法中添加了一行:new MyDataType。奇怪的是,当我创建实例的后续行Class.forName( MyDataType ).newInstance()失败时,操作成功了。

Class Main{

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

为什么是这样?当我用谷歌搜索时,我发现许多答案表明MyDataType.class可能不在classpath. 我认为这里不是这种情况,因为 newMyDataType()运行良好。

我的运行时和构建时类路径包括包含所需类的 jar。

4

1 回答 1

4

尝试给出方法所需的完整限定名:

Class.forName("com.package.where.class.exists.MyDataType").newInstance();
于 2013-03-11T05:04:08.347 回答