【问题标题】:NoClassDefFoundError for junits during mvn testmvn 测试期间 junits 的 NoClassDefFoundError
【发布时间】:2023-02-20 14:48:55
【问题描述】:

我当前的设置中有以下两个依赖项。

<dependency>
    <groupId>com.adobe.aem</groupId>
    <artifactId>aem-sdk-api</artifactId>
    <version>${aem.sdk.api}</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.tinify</groupId>
    <artifactId>tinify</artifactId>
    <version>1.6.4</version>
    <scope>provided</scope>
</dependency>

我有这个测试类,它使用来自 com.adobe.aem 包的 gson 依赖项,至少 IDE 是这么说的

当我从 IDE 运行测试或执行 mvn clean install 时,所有测试都执行良好。


我现在没有用 com.tinify 包,我从 pom.xml 中删除了这个依赖项。 从 IDE 运行测试(右键单击并执行测试)工作正常,但是当我执行 mvn clean installmvn test 时,我得到 gson 库的 NoClassDefFoundError

java.lang.NoClassDefFoundError: com/google/gson/internal/LinkedTreeMap
    at com.......

使用com.tinify包运行mvn dependency:tree给了我这个

[INFO] +- com.tinify:tinify:jar:1.6.4:provided
[INFO] |  +- com.squareup.okhttp3:okhttp:jar:3.10.0:provided
[INFO] |  |  \- com.squareup.okio:okio:jar:1.14.0:provided
[INFO] |  \- com.google.code.gson:gson:jar:2.8.5:provided

据我所知,mvn 使用com.tinify 包中的 gson 库,删除它会导致此异常。但是 com.adobe.aem 依赖项还包含 gson 包。

如何让 mvn 使用 com.adobe.aem 包中的 gson 库?

【问题讨论】:

  • 依赖范围的配置不同。
  • 可能 Tinify 将其 GSON 依赖范围设置为可传递,而 Adob​​e 已将 GSON 设置为提供。作为衡量标准,您应该考虑自己提供 GSON 依赖项。
  • 显然 aem-sdk-api 是一个具有依赖关系的 JAR。不确定这是否是这个特定问题的原因,但你肯定会有更多乐趣由于这个在未来。最好澄清一下为什么 Adob​​e 将其作为依赖于 Maven 的 JAR 进行分发,因为这违背了使用 Maven 作为依赖性管理工具的目的。

标签: java maven gson


【解决方案1】:

你得到这个问题的解决方案了吗?我对 JsonObject 也有类似的问题

【讨论】:

    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2021-06-23
    • 1970-01-01
    • 2012-08-21
    • 2018-09-01
    相关资源
    最近更新 更多