2013-04-26 54 views
1

我正在尝试在我的Android应用程序项目中使用Jackson。其他一切正常,但通过Maven运行CI测试失败,如果我从Eclipse运行相同的测试它的工作原理,但我没有使用Maven POM文件,即我没有导入项目作为Maven项目,而是我已经复制杰克逊JAR进入库文件夹。 杰克逊依赖添加到应用程序POM这样的:Android,Maven和Jackson

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

我从詹金斯得到的错误看起来是这样的:

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。

回答

1

看起来像这样是一个known issue。一个解决办法是添加以下到您的依赖性:

<scope>provided</scope> 
+0

是的,这似乎是已知的问题,它也是在Maven的Android的插件页面文件(https://code.google.com/p/行家-机器人-插件/维基/ AutomateAndroidTestProject?TS = 1302196581&更新= AutomateAndroidTestProject)。 – pmellaaho 2013-04-29 05:44:56