gpt4 book ai didi

java - Maven 多模块项目中的 JUnit 测试抛出 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 11:54:16 25 4
gpt4 key购买 nike

我们的项目具有以下结构:

├─ A
├─ A-A
├─ A-B
├─ A-C
├─ A-D
├─ A-E
├─ A-F
├─ A-G

相关的 JUnit 测试位于 A-A 中。在使用 Maven 之前,我们必须在 Eclipse 中调整运行配置(将参数选项卡中的工作目录设置为启动应用程序的 A-B),以便无错误地启动所有测试。

现在,当我们尝试运行测试时,我们会从位于 A-A 的类中收到 NoClassDefFoundError ,无论我们是否在 Eclipse 中执行此操作(运行方式 > JUnit Test )或使用 Maven(mvn test)。我认为这与 similar issues on Stack Overflow 不同因为我们的测试根本不起作用。

我的猜测是我们的 POM 配置错误,Surefire 无法找到所有类文件或类似文件。有没有一种方法可以像我们之前使用运行配置那样配置插件?或者这个错误是由其他原因引起的(例如 M2Eclipse)?

编辑:项目A-A的内部结构如下(ClassCausingError从Maven依赖项扩展类):

├─ A-A
├─ src/main/java
├─ foo/bar/ClassCausingError.java
├─ src/main/resources
├─ src/test/java
├─ foo/bar/ClassCausingErrorTest.java
├─ target
├─ pom.xml

最佳答案

将 Maven 构建运行配置的主选项卡中的基本目录设置为 A-B 修复了该问题。这似乎与之前为 JUnit 设置工作目录具有相同的效果。此外,我编辑了 POM 以使测试从命令行运行:

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<workingDirectory>A-B</workingDirectory>
</configuration>
</plugin>

关于java - Maven 多模块项目中的 JUnit 测试抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com