Android、Maven 和 Jackson

标签 android maven jackson android-testing android-maven-plugin

我正尝试在我的 Android 应用程序项目中使用 Jackson。其他一切都很好,但通过 Maven 在 CI 中运行测试失败,如果我从 Eclipse 运行相同的测试,它会工作,但我没有使用 Maven POM 文件,即我没有将项目导入为 Maven 项目,而是我复制了 jackson JAR 进入 libs 文件夹。 像这样将 Jackson 依赖项添加到应用程序 POM 中:

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>    

我从 Jenkins 得到的错误看起来像这样:

java.lang.IllegalAccessError: 预验证类中的类引用解析为意外实现

并且 Logcat 打印以下内容:

Class resolved by unexpected DEX:
LmyClass;(0x41345f78):0x190e58 ref [Lorg/codehaus/jackson/map/ObjectMapper;] Lorg/codehaus/jackson/map/ObjectMapper;(0x41345f78):0x1a08b0
(LmyClass; had used a different Lorg/codehaus/jackson/map/ObjectMapper; during pre-verification)

这是由我的代码中的以下行引起的:

ObjectMapper mapper = new ObjectMapper();

我正在运行的测试是 Android InstrumentationTestCase。

最佳答案

看起来这是一个 known issue .一种解决方案是将以下内容添加到您的依赖项中:

<scope>provided</scope>

关于Android、Maven 和 Jackson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234906/

相关文章:

android - 在模拟器中观察短信发送应用

android - TextView 滚动问题

android - 适用于 Xamarin Android 应用程序的 Google 跟踪代码管理器

java - HTTP 状态 500 - java.lang.LinkageError - Servlet

使用 javac 对同一 jar 成功编译后,java 在 jar 中找不到类

java - 在 Eclipse m2e 中,如何引用工作空间项目?

java - 如果 getter 抛出异常,如何让 Jackson 忽略属性

android - 升级 flutter 版本 2.0 时出错

java - Jackson:忽略属性而不是抛出 JsonMappingException

java - 如何在没有列表名称的情况下使用 Jackson 序列化列表?