我需要帮助对 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。
最佳答案
看起来这是 Failsafe 插件的问题。我从 2.22.2 降级到 2.18.1,现在一切正常。
关于java - 如何修复同一 Maven 模块中类的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57436961/