This question already has answers here:
Maven Failsafe Classpath
                                
                                    (2个答案)
                                
                        
                                6个月前关闭。
            
                    
我需要帮助来对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。

最佳答案

看来这是故障保护插件的问题。我从2.22.2降级到2.18.1,现在一切正常。

07-27 20:26