java - 如何修复同一 Maven 模块中类的 ClassNotFoundException

标签 java maven classnotfoundexception maven-failsafe-plugin

我需要帮助对 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/

相关文章:

java - Tomcat 8.5 中的 Spring Boot Jersey 应用程序错误 AbstractMethodError : javax. ws.rs.core.UriBuilder.uri

java - 在struts 2中使用迭代器时出错

java - 如何使用 FusedLocation API 每 5 分钟接收一次位置更新

java - Cobertura+故障保护 : make "mvn clean site" proceed even if an integration test fails

Java 8 到 Java 9 迁移 mavenised 项目的最佳方式

java - 请放心,TestNG ins 不会与 Maven 项目一起工作

java - 加载 : class MyApplet not found : java. lang.ClassNotFoundException。当包中存在类文件时,为什么我会收到此消息?

android - 无法解析 Lcom/work light/android gap/WLDroid Gap 的父类(super class)

java - 重写嵌套 if 的最简洁方法