我当前的设置中有以下两个依赖项。
<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 库?
我遇到了同样的问题,我通过在 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 存储库 希望这有帮助