mvn 测试期间 junits 出现 NoClassDefFoundError

问题描述 投票:0回答:1

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

<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 install
mvn test
时,我会得到
NoClassDefFoundError
库的
gson

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

使用

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

[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 库?

java maven gson
1个回答
0
投票

我遇到了同样的问题,我通过在 core/pom.xml 文件中添加以下依赖项来修复它,范围将提供单元测试所需的类

    <dependency> 
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.10.1</version>
        <scope>test</scope>
    </dependency>

来源 无法在 AEM 6.4 的测试类中创建 gson 对象gson 库的 Maven 存储库 希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.