2

修复以下错误信息

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

我添加了“ spring-web-3.0.2.jar ”来构建android应用程序的路径,并在JavaBuildpath的“order and Export”中选择了那个jar。(properties->buildpath->order and Export)。

添加此特定(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?是因为包含 Lorg/springframework/http/HttpEntity 的多个 jar。

以下是我在项目中添加的 jar。

  1. 简单的xml-2.7
  2. spring-android-auth-1.0.1.RELEASE
  3. spring-android-core-1.0.1.RELEASE
  4. spring-android-rest-template-1.0.1.RELEASE
  5. spring-web-3.0.2.RELEASE

我该如何解决这个问题?任何帮助都非常有用。

4

2 回答 2

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 和 core 工件不依赖于 spring core 或任何 Spring Framework 库。然而,auth 依赖和 Spring Social 一样。您可以像下面这样全局排除,然后您不必为每个依赖项重复排除。我也同意在较新的 Android Gradle 插件版本中对 PackagingOptions 的挫败感。它确实应该支持通配符,因此您不必单独声明所有这些。希望谷歌将来会添加它。代码:

configurations.compile {
      exclude module: 'spring-core'
      exclude module: 'spring-web'
      exclude module: 'commons-logging'
  }
于 2014-05-22T21:12:01.623 回答
2

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

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

于 2013-07-10T15:14:49.827 回答