2

以下のエラーメッセージを修正するには

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

Androidアプリのビルドパスに「 spring-web-3.0.2.jar 」を追加し、JavaBuildpath.(properties->buildpath->order and Export)の「order and Export」でそのjarを選択しました。

この特定 (spring-web-3.0.2.jar) を追加した後、「java.lang.NoClassDefFoundError」を修正しましたが、アプリケーションを実行しようとすると、次のエラーがスローされます。

Dex Loader] dex を実行できません: 複数の dex ファイルで Lorg/springframework/http/HttpEntity が定義されています。Dalvik 形式への変換に失敗しました: dex を実行できません: 複数の dex ファイルで Lorg/springframework/http/HttpEntity が定義されています。

私は何をしていますか?それは、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

spring-web-3.0.2.RELEASE は必要ないと思いますので、削除して再度確認してみてください。このエラーは、Dalvik 仮想マシンが同じ名前とパッケージを持つ 2 つのクラスを検出したためです。

org.springframework.http.HttpEntity は、Spring Android と Spring-web に存在します。

于 2013-07-10T15:14:49.827 に答える
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'
  }
于 2014-05-22T21:12:01.623 に答える