无法执行dex:多个dex文件定义Lorg / springframework / http / HttpEntity

时间:2013-07-10 15:11:52

标签: android spring

修复以下错误消息

java.lang.NoClassDefFoundError:org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter

我添加了“ spring-web-3.0.2.jar ”来构建android应用程序的路径,并在JavaBuildpath中的“order and Export”中选择了该jar。(properties-> buildpath-&gt ;订单和出口)。

添加此特定内容后(spring-web-3.0.2.jar)修复了“ java.lang.NoClassDefFoundError ”,但尝试运行我的应用程序时抛出了一个错误的错误。

Dex Loader]无法执行dex:多个dex文件定义Lorg / springframework / http / HttpEntity;  转换为Dalvik格式失败:无法执行dex:多个dex文件定义Lorg / springframework / http / HttpEntity;

我在做什么Worng?是因为多个jar包含Lorg / springframework / http / HttpEntity。

Follwing是我在项目中添加的jar。

  1. 简单的XML-2.7
  2. 弹簧机器人-AUTH-1.0.1.RELEASE
  3. 弹簧机器人核-1.0.1.RELEASE
  4. 弹簧机器人静止模板-1.0.1.RELEASE
  5. 弹簧网络3.0.2.RELEASE
  6. 我该如何解决这个问题呢?任何帮助都很有用。

2 个答案:

答案 0 :(得分:2)

我认为不需要spring-web-3.0.2.RELEASE,请尝试将其删除并再次检查。该错误是因为Dalvik虚拟机发现了两个具有相同名称和包的类。

org.springframework.http.HttpEntity存在于Spring Android和Spring-web中。

答案 1 :(得分:2)

看一下这篇文章,它似乎是相关的,特别是罗伊的回答

http://forum.spring.io/forum/spring-projects/android/743289-importing-android-spring-with-gradle-cause-error-mutiple-dex-files

  

Spring for Android rest-template和核心工件不依赖于spring核心或任何Spring Framework库。但是,auth依赖与Spring Social一起。您可以像下面那样全局排除,然后您不必为每个依赖项重复排除。我也同意在较新的Android Gradle插件版本中对packagingOptions的挫败感。它确实应该支持通配符,因此您不必单独声明所有这些。希望Google将在未来添加它。   代码:

configurations.compile {
      exclude module: 'spring-core'
      exclude module: 'spring-web'
      exclude module: 'commons-logging'
  }