dexを実行できません:複数のdexファイルが定義されています


125

私はこの質問が以前にここで何度か尋ねられたことを知っています。しかし、私はまだ可能な解決策を見ていません。「Androidアプリケーションとして実行」プロジェクトを作成する前に、クリーンアップしないと、次のエラーが表示され、Eclipseを再起動して再度クリーンアップする必要があります。

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define
     Lcom/jstun/core/attribute/MessageAttributeInterface;

com.jstun.core ...は私のsrcフォルダーの一部ですが、もちろん削除できません。そして、そのパッケージを削除しても、別のパッケージが次のようなエラーとして表示されます:

Unable to execute dex: Multiple dex files define
     Landroid/support/v4/app/ActivityCompatHoneycomb;

ADT 15にアップデートしてからこのエラーが発生しました。UbuntuでEclipse Galileoを使用しています。何かアイデアはありますか?返信ありがとう!


私はこのスレッドでほぼすべてを試しましたが、うまくいきませんでした。プロジェクトを削除してから新しいプロジェクトを作成し、バックアップからソースファイルをコピーして貼り付けることで問題を解決しました。
linuxjava 2015

これを参照してください。stackoverflow.com/questions/34415101/...
スティーブ・

次のリンクで私の答えを見てください。stackoverflow.com/a/38391449/3702595
Sattar Hummatli 16

回答:


136

これはビルドパスの問題です。

  • binフォルダーがビルドパスに含まれていないことを確認します。

  • プロジェクトを右クリック->プロパティに移動->ビルドパス。

  • Honeycombライブラリがlibs/ソースフォルダではなくフォルダにあることを確認してください。

  • ライブラリをビルドパスにlibs/個別に含めます。

    ところで、android-support-v4Honeycombサポートライブラリの代わりにライブラリを持ち込んでIce Cream Sandwichのサポートを取得することもできます。


50
この問題は、ビルドパスに複数のバージョンのライブラリが物理的に含まれている場合にも発生しました。libsパスから未使用のライブラリーを削除し、プロジェクトをクリーンアップして保存し、Eclipseを再起動して再コンパイルすると、うまくいきます。
Aryo 2013

ビルドパスからbinフォルダーを除外すると解決しました。ありがとう!
alekop 2014

2
問題の根本的な原因は、ライブラリの1つが./libs dirに保存されたjarとしてnineoldandroidライブラリを使用していたのに対し、別のプロジェクトはそれを参照してnineoldandroidを使用していたことです
Deepika Lalra

これはFoo.java、パッケージ内やFoo.javajar内に何かがある場合にも発生する可能性がありますlibs/
技術11

このエラー/バグは、プロジェクトフォルダがGoogleドライブにある場合に発生します。ドライブが同期するときにバグが発生すると思います。少なくとも私にとって
ymerdrengene

58

今日同様のエラーが発生しましたが、その理由は、サポートライブラリが、アプリプロジェクトで使用されているが異なるバージョンの2つのライブラリプロジェクトによって参照されているためです。

詳細:私のアプリは2つのライブラリプロジェクトに依存しています

  • FaceBookSDK 3.0-> android-support-v4を参照しています
  • ActionBarSherlock-> android-support-v4を参照していますが、マップをサポートするように変更されたバージョンが含まれています。

この問題を解決するには、FaceBookSDKライブラリを、サポートライブラリではなくABSライブラリに直接依存させる必要がありました。


はい、私の問題は同様でした。2つのライブラリーにhttpmimeライブラリーがあったので、1つを削除して他のプロジェクトを指すようにしました。
Matt

10
どのようにあなたがそれをどのようにしたか正確に説明できますか?
Samih A

3
私が言及した例の@samihでは、まずFacebookSDKプロジェクトのlibフォルダーとビルドパスからandroid-support-v4 jarを削除しました。次に、ActionBarSherlockライブラリプロジェクトへの参照を追加しました。
M.Sameer

別の開発者が古いバージョンのライブラリjarファイルを削除せずに新しいバージョンのライブラリjarファイルを追加したことがわかった。したがって、同じクラスの2つのjarがありました。したがって、「Multiple dex files ...」というエラーが表示されます。grep-r 'OffendingClassName' | grep jar $は、クラス名を含むjarファイルを検索します。
bibstha 2013年

同様ですがandroid-support-v4.jar、Eclipseビルドパスに誤って追加し、libs作成したフォルダーに手動で追加しました。参照が重複しているため、コンパイルできませんでした(OPが取得したエラーメッセージが表示されました)。私がlibs愚かに作成したフォルダを削除し、すべてが機能しました。ヒントをありがとう。
kurtzbot 2013年

47

私にとっては、私はandroid support v4.jarというlibsフォルダー内のファイルを削除しましたが、すべてうまくいきました。幸運を :)


1
私にとってそれはファイルandroid support v4.jar(1).jarでした、私はそれを削除し、プロジェクトをクリーンアップしました!
ymerdrengene 2014

33

同じエラーが発生し、修正するたびに、Eclipseを再起動した後にエラーが発生しました。

まず、他の人が言ったように、プロジェクトの周りに同じ.jarファイルの複数のコピーがないことを確認してください。

私の場合、(他のライブラリプロジェクトの中で)ActionBarSherlockを使用するメインプロジェクトがありました。私にとってうまくいったトリックは、に入っActionBarSherlock --> Properties --> Java Build path --> Order of Exportて選択を外すことAndroid Private Librariesでした。次にProject -> Clean、プロジェクトを正しくビルドできるようになります。

さて、何らかの理由で、Eclipseを再起動するたびに、そのチェックボックスが自動的に有効になるため、このプロセスをもう一度繰り返す必要があります。

これがそこに失われた魂を助けることを願っています:)


32

Project / propertiesおよびJava Built Pathに移動し、Android Private Librariesをオフにします


1
私の問題も修正しました!
2014年

しかし、gcm.jarが機能しなくなった場合、このエラーなしで機能させるにはどうすればよいですか?
Narendra Singh

エラーが発生しました:複数のdex Lcom / google / android / gms / analytics / internal / Command $ 1。私はグーグルプレイを22.1.1にアップグレードした後にこれを得ました。グーグルプレイプロジェクト内のプライベートライブラリの選択を解除すると、エラーが削除されました
eugene

あなたは私の命を救いました!Thx〜–
Leo Hsieh

15

私には、プロジェクトのプロパティ>> Javaビルドパス>>注文とエクスポートに移動します。下の画像のように、すべての外部ライブラリのチェックを外します。それは私のために働きます。この助けを願っています。

プロジェクトのプロパティ


それは私にとって問題でした
Piyush-Ask Any Difference

8

私のプロジェクトでもこの問題に直面しています。AVDは、アセット、ライブラリ、解像度などのフォルダーコンテキストを再ロードできません。問題:Dexローダー] dexを実行できない:複数のdexファイルが定義されていますLandroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl

その後、私は新しいプロジェクトやコピー作成MainActivity.javaactivity_main.xml、描画可能なコンテキストを。次に、パッケージエクスプローラーから古いプロジェクトを削除し、EclipseとAVDを再起動します。私のプロジェクトは現在正常に動作しています。...:)この手順が少しでも役立つことを願っています。


8

私は同じ問題を抱えています、私が試したのは:

  1. リストアイテム
  2. プロジェクトのビルドパスを開く
  3. 「ライブラリ」タブを選択し、
  4. Androidライブラリを除くすべてのライブラリを削除する
  5. 必要なすべてのJARファイルを追加します。
  6. これで完了です。

それは私のために働く、ありがとう。


ええ、私は同じことをしました。すべてのjarファイルを削除し、再度追加しました。順序とエクスポートでは、依存関係をチェックせず、今追加されたすべてのライブラリをチェックしました
Maulik Sheth 2013

6

電話ギャップのためのfacebook-connent-pluginでこの問題に直面している人がいる場合

bin / class / com / facebook / androidディレクトリにあるファイルを削除してみてください!->そして再構築


これが正解です。説明は---- facebook.androidが2回含まれています。プロジェクトに含まれているfacebookSDK.jarに一度、そしてJavaファイルがプロジェクトに直接含まれていると。それをプロジェクトから削除することは、それを行うためのクリーンな方法です。他のすべての答えは、定義または何かをエクスポートしない
回避策

6

他の人が述べたように、これは、ビルドパスまたはセットアップの他の場所に同じクラスの複数のコピーがある場合に発生します。

私は自分のlibs /フォルダーにandroid-support-v4.jarを追加しており、eclipseがbin / classes / android-support-v4.jarに2番目のコピーを追加しました。

あなたはこれをテストすることができます

grep -r YourOffendingClassName YourApp | グレップジャー

bin / classesの余分なコピーを削除すると問題が解決しました-Eclipseがそこにコピーを作成した理由がわかりません。


1
ここにリストされている他のすべてのオプションを試しましたが、これが私のためにそれを解決したものです!:)そして、はい、Eclipseは終了し、Android Studioはバージョン1.0を取得しているはずです。そうすれば、世界はより良い場所になるでしょう。
ヨハンポール

5

別の理由でこのエラーが発生しました。v4とv13の両方のサポートライブラリを誤って追加しました。私のminSdkVersionは15なので、これは私には必要ありませんでした。

v13サポートライブラリのみを含めることで修正しました。また、Eclipseでエクスポートしたライブラリビルドパスのライブラリにチェックマークを付けてください。一番上に移動しました。


これも私を動機づけました。v13サポートライブラリはv4 サポートライブラリが含まれているため、dexは複数のクラス宣言を示していました。
カイルファルコナー2013

4

複数の回答を試しても、解決策はありませんでした。

ビルドパスから「Android Dependencies」を削除しました。すべてのjarファイルをビルドパスに再度追加すると、エラーは発生しなくなりました。どういうわけか日食は物事をキャッシュするように見えました。


3

この答えは、私がそうであったように、このシナリオに参加した人に任せます。

Support Library JARファイルを誤ってsrcフォルダーにドラッグアンドドロップすると、そこにあることに気づく前に、あちこちで偶然見つけました。どうやって起こったのか、そこに落としてしまったので、何かがおかしいとは思いもしませんでした。

同じエラーが発生していましたが、しばらくして問題が見つかり、削除しました。プロジェクトは現在正常に動作しています。


3

私にとっての解決策は、次のことをすることでした:

  1. -> libディレクトリをプロジェクトに追加し、複数の要素を削除します。
  2. プロジェクト->プロパティ-> Javaビルドパスおよびすべての依存関係ライブラリの削除が自動的に追加されました。->適用
  3. Eclipse IDEを再起動します
  4. 今すぐプロジェクトをクリーンアップします。
  5. デバイス/エミュレーターでプロジェクトを実行/デバッグする...幸運

問題は、まだ存続
アクヒルジャイナ

2

私の最初の問題は:

dexを実行できません:java.nio.BufferOverflowException。Eclipseログでスタックトレースを確認します。

1)プロジェクトを右クリック-> Androidツール->サポートライブラリを追加 (アプリを実行...機能しなかったので続行します...)2)プロジェクトをもう一度右クリック -> プロパティ-> Android-> Project Build TargetでAndroid 4.1.2(16)確認します(アプリをもう一度実行して...

dexを実行できない:複数のdexファイルがLandroid / support / v4 / app / BackStackStateを定義しています。

3)それで、私は自分のプロジェクトの「lib」フォルダーに行き、「古い」Android.support.library.jar削除ました (アプリを実行して、指をクロスして...)

できます!

それが誰かを助けることを願っています...人々に感謝します!


2

私はこの問題を抱えていて、それは同じライブラリが何度も読み込まれるが、システムが同じ名前とおそらく同じパッケージ名のクラスを同時に読み込もうとしているという意味ではありません。

  • com.pack1.deClass Geometrylibrary1.jar

そして別の

  • com.pack1.deClass Geometrylibrary2.jar.

どのようにアプローチする必要がありますか?どのメソッドが使用されているか、library1.jarまたはlibrary2のメソッドを分析する必要があります。

2つのソリューションがあります、

  1. パッケージ名を変更してから、dalvikがそれらを別個のクラスであると解釈します。
  2. または、リスクを冒したい場合は、実際に使用するメソッドが含まれていないクラスを削除します。

このよくある質問が明確になったことを願っています。


2

ビルドパスからAndroidの依存関係を削除しましたが、機能しました。


1

このエラーは、アプリのプロジェクトでEclipseワークスペース(私の場合はFacebook SDK)ライブラリプロジェクトを参照し、同時に libsフォルダーにjarとしてFacebook SDKを含めたときに発生しました。ライブラリ参照を削除し、jarをlibsフォルダーに保持することで、エラーが削除されました。


1

同じ問題がありました。私は.apkファイルを削除する必要があり、それが機能しました。


1

私にとっては、libフォルダーからandroid-support-v4.jarを削除し、ビルドパスからも削除しました。


こんにちはラック、Stackoverflowへようこそ。回答の長さと内容が原因で、回答の品質が低いと報告されました。質問に答えるときは、問題を解決する方法について追加の説明を入力してください。それは他の人を助け、あなたの評判を獲得します:)
スーパーヒーロー

1
  • プロジェクトを右クリックして、 build Path>configuration build path
  • ライブラリタブを選択しsupport-v4 library、クリックして削除をクリックします
  • OKをクリックします

次に、プロジェクトをクリーンアップして実行します:-)


0

他の誰かが私がちょうどしたようにこの問題に頭をぶつけた場合:

私の事件には、一連の図書館プロジェクトが含まれていました。すべてのライブラリでプロジェクトをクリーンアップするだけで、すべてが修正されました


0

私は日食で以下の解決策を見つけました...それがあなたのために働くことを願っています:)

Right click on the Project Name

Select Java Build Path, go to the tab Order and Export

Unchecked your .jar library's

0

この問題は、同じライブラリがプロジェクトに複数回追加されたときに発生します。ライブラリを意図的に複数回追加していない場合は、プロジェクトに追加したライブラリの依存関係/プライベートライブラリを確認してください。おそらく、この競合を引き起こしているライブラリがすでにライブラリに含まれている可能性があります。


0

私もこれが問題であることを見つけるのに苦労していました。私の場合、apkを電子メール(ドラッグドロップ)にコピーしているときに起こったことは、誤ってapkがいずれかのパッケージのsrcフォルダーに貼り付けられたためです。ソースフォルダからAPKを削除した後、それはうまくいきました。


0

Intellijでこの問題が発生しました。これは、プロジェクトに追加したActionBarSherlockライブラリがandroid-support-v4.jarをコンパイル依存関係として定義し、このjarがプロジェクトにすでに含まれているため、DEXの複数のコピー/バージョンがあったためです。コンパイル時間。

解決策は、私のプロジェクトがすでに提供しているため、このjarのActionBarSherlockモジュールの依存関係をコンパイルではなくランタイムに変更することでした。


0

私にとっての問題は、以前にlibプロジェクト(autobahn lib)を追加し、後で同じライブラリのJarファイルに切り替えたことです。古いライブラリプロジェクトへの参照を削除しましたが、このエラーが発生しました。ここですべての回答に従って、ビルドパスなどを確認しました。ただし、これらのライブラリを手動でビルドパスに追加していません。だから私は削除するものは何もありませんでした。最後にこのフォルダに出くわしました。

bin / dexedLibs

競合を引き起こしているautobahn Androidに対応する同じ名前の2つのjarファイルがあることに気付きました。そのため、dexedLibsフォルダー内のすべてのjarファイルを削除して、プロジェクトを再ビルドします。これで問題は解決しました。


0

無数の他の潜在的なソースを追加するには...プロジェクトのlibフォルダー内のすべてのライブラリーを更新しましたが、Eclipseはすべての元のライブラリーを「うまく」再インストールしました。Eclipse内でこれらのライブラリへの参照はなくなりましたが、外部のdex-makerプログラムがlibディレクトリ内のすべてのファイルを取得したため、いくつかのライブラリ.jarファイルの2つのバージョンが取得されました。

git status新しいファイルを識別してgit clean -fそれらを取り除きました(ただし、コピーからファイルを開いたままにしていたため、WindowsでEclipseを待機または再起動しなければならない場合がありました)。


0

超シンプルなソリューションと最高の:

右クリックのメインプロジェクトのフォルダー->プロパティ-> Android XY(XYはandroidのバージョン)以外のJavaビルドパスをすべて削除します。クリーン、そしてビルド。できた!

その前に、android-support-v4.jarが1つあることを確認してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.