我需要帮助对Java项目中的ClassNotFoundException进行故障排除。该项目是使用Maven构建的。它包含使用Failsafe插件和TestNG运行的特定集成测试。当我在IDE(IntelliJ IDEA)中运行它时,该测试通过了,但是当我使用mvn clean install
从命令行运行它时,它失败并显示ClassNotFoundException。
为了排除环境问题,我在两台计算机macOS和Ubunutu上进行了尝试,结果在两台计算机上都得到了相同的结果。 Ubuntu计算机仅安装了一个JVM,因此IntelliJ和Maven必须在该计算机上使用相同的JVM。两台机器都使用Java 1.8。
不幸的是,我不共享代码,因为我不拥有它。因此,我将尽力描述相关细节。集成测试在运行时(而不是在编译时)在以下行上失败:Class c = MyPojo.class
。集成测试和MyPojo在不同的程序包中,但是它们是在同一个Maven模块中定义的,因此它们在同一个jar文件中。
MyPojo是一个简单的POJO,它:
我查看了另一个名为MyPojo且具有相同类路径的类的项目依赖项,但找不到任何依赖项。为了排除依赖性冲突,我还尝试将MyPojo重命名为MyPojo2,结果是ClassNotFoundException引用了MyPojo2。
答案 0 :(得分:1)
看起来这是故障保护插件的问题。我从2.22.2降级到2.18.1,现在一切正常。