1

我正在尝试在我的 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。

4

1 回答 1

1

看起来这是一个已知问题。一种解决方案是将以下内容添加到您的依赖项中:

<scope>provided</scope>
于 2013-04-26T12:46:53.927 回答