修复以下错误消息
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。
我该如何解决这个问题呢?任何帮助都很有用。
答案 0 :(得分:2)
我认为不需要spring-web-3.0.2.RELEASE,请尝试将其删除并再次检查。该错误是因为Dalvik虚拟机发现了两个具有相同名称和包的类。
org.springframework.http.HttpEntity存在于Spring Android和Spring-web中。
答案 1 :(得分:2)
看一下这篇文章,它似乎是相关的,特别是罗伊的回答
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'
}