gpt4 book ai didi

java - 使用 Class.forName(..).getInstance 时 Junit 出现 ClassNotFoundException 而 new() 工作正常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:56 25 4
gpt4 key购买 nike

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

我有一堆测试 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 中。我不认为这里是这种情况,因为 new MyDataType() 运行良好。

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

最佳答案

尝试给出完整的限定名称,method 需要它:

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

关于java - 使用 Class.forName(..).getInstance 时 Junit 出现 ClassNotFoundException 而 new() 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15331487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com