如何在同一 Maven 模块中修复 class 的 ClassNotFoundException

How to fix ClassNotFoundException for class in the same Maven module

我需要帮助解决 Java 项目中的 ClassNotFoundException。该项目是使用 Maven 构建的。它包含一个特定的集成测试 运行 使用 Failsafe 插件和 TestNG。当我在我的 IDE (IntelliJ IDEA) 中 运行 它时,这个测试通过了,但是当我从命令行使用 [=11] 运行 它时,它失败并出现 ClassNotFoundException =].

为了排除环境问题,我在两台计算机(macOS 和 Ubunutu)上进行了尝试,并且在两台计算机上都得到了相同的结果。 Ubuntu 计算机只安装了一个 JVM,因此 IntelliJ 和 Maven 必须在该计算机上使用相同的 JVM。两台机器都使用 Java 1.8.

很遗憾,我无法共享代码,因为我不拥有它。因此,我将尽可能多地描述相关细节。集成测试在 运行 时间(不是编译时间)在这一行失败:Class c = MyPojo.class。集成测试和 MyPojo 在不同的包中,但它们在同一个 Maven 模块中定义,因此它们在同一个 jar 文件中。

MyPojo 是一个简单的 POJO:

我查看了另一个 class 具有相同 class 路径且名为 MyPojo 的项目的依赖项,但我找不到任何依赖项。为了排除依赖冲突,我也试过将MyPojo重命名为MyPojo2,结果ClassNotFoundException引用了MyPojo2。

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