dexを実行できない:複数のdexファイルがLcom / myapp / R $ arrayを定義しています。


391

ADT14に更新したため、プロジェクトをビルドできなくなりました。アップデート前は問題なく構築されていました。

エラー:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

同様の問題が報告されており、私はそこに提案を試みました

  • を再起動していEclipseます。
  • プロジェクトのクリーニングと再ビルド-[プロジェクト]-> [自動的にビルド]オプションを無効にしてから、[クリーン]と[ビルド]プロジェクトを実行し、実行してみます。「自動ビルド」オプションをオンにリセットします
  • Android開発者ツールの再インストール
  • Eclipseの再インストール(最新バージョン3.7.1に更新)
  • ファイルシステムからインポートする新しいプロジェクトを作成しました
  • subversionから新しいプロジェクトを作成しました。

WindowsかMacで作業していましたか?次の回答に従いたいのですが、Macで作業するかどうかは
わかり

ライブラリプロジェクトをインポートし、librフォルダーにライブラリJARもインポートした場合は、libフォルダーおよび[ビルドパス->ビルドパスの構成]からjarファイルを削除する必要があります。そしてそれは働くでしょう。
Mehul 2016年

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

回答:


462

私は同じ問題を抱えていましたが、それはEclipseを使用しているときにのみ発生したのでかなり奇妙です(しかし、Antで問題ありませんでした)。これは私がそれを修正した方法です:

  • を右クリック Project Name
  • 選択Build Path->Configure Build Path
  • Java Build Path、タブに移動しますOrder and Export

  • .jarライブラリのチェックを外します

たまにのみ: [注文とエクスポート]タブにjarライブラリがなかったため、Androidプライベートライブラリの項目をオフにしました。これで私のプロジェクトが実行されています。


私のプロジェクトでは、ビルドパスにsdkディレクトリのサポートライブラリを含めていました。また、antビルドをサポートするために、「libs」フォルダーにサポートライブラリを用意しました。チェックを外すと問題が解決しました。
Chris Feist 2013

20
前回のビルドと起動の間に、プロジェクトに新しいライブラリが不思議な形で登場しました。「Android Private Libraries」には、すでに参照していたサポートライブラリが含まれています。そこで、この不思議な「複数のdexファイルが____を定義する」が登場しました。Javaビルドパスをチェックしてこの新しい項目を確認し、最初に含まれていたサポートライブラリをオフにすると、問題が解決しました。
トムペース2013

9
どうもありがとう。これが正しい解決策です。Eclipseにこれほど多くのバグがある理由は本当にわかりません。今、状況は私がコーディングできるのはたったの2時間で、6時間はこの種の不要な問題の解決策を見つけなければならないようなものです。
roy mathew 2013年

44
[注文とエクスポート]タブにはjarライブラリがなかったため、Android Private Librariesアイテムをオフにしました。これで私のプロジェクトが実行されています。
ジュニアメイヘ2014年

1
私の場合、 android-support-v4.jar」の重複がありました。私はときに削除されたことを、エラーが去っていきました
ymerdrengene

94

以前のバージョンのツールから残っているディレクトリとファイルをクリーンアップした後、問題は解決しました。ADT Rev 14では、バイナリの保存場所が変更されています。binディレクトリ全体を削除し、Eclipseを再起動してビルドをクリーンアップし、強制的に再ビルドしました。それは最初はトリックを行うように見えましたが、問題は次の実行の後に戻ってきました。

最終的に、binディレクトリがプロジェクトのビルドパスに含まれていることがわかりました。ビルドパスからビンを除外し、上記の手順を繰り返しました。これで私の問題は解決しました。


42
一体何がグーグル。この問題は、R15を使用しても再発し続けます。
テリー、

2
上記のソリューションを編集して、最終的な解決策を含めました。完全に解決しました。
テリー

7
要するに、誰も本当に知らない、なぜ問題が発生し、どのようなそれは意味し、どのように(私はJavaのビルド・パスのいずれかのbinディレクトリを持っていない)それを修正します。これらの理由により、R9のままでR15への更新を避けました。しかし、私にはまだ似たような問題があり、手掛かりはありません。ヒントやヘルプをいただければ幸いです。
Bill The Ape

6
@BillTheApe-同意した。これはイライラする以上に、コストがかかります。
トムレッドマン2012年

@TRedman私はようやく問題解決することができました。理由がわからない。笑わないで。笑+1。
Bill The Ape、2012年

50

[私のために解決]

Eclipseプロジェクトのプロパティ-> Javaビルドパス->注文とエクスポート

Androidプライベートライブラリをオフにします。


4
私の場合は役に立ちませんでした
redux

1
THANX A LOTが私を助けてくれました
madhu527

46

上記のどれも役に立たなかった。結局簡単な問題でした。

ライブラリプロジェクトとしてFacebookSDKとViewPagerIndicatorを使用するプロジェクトがありました。すべてがAndroid API 16に基づいて構築され、これら2つのプロジェクトはAndroidサポートライブラリvXを使用しました(Xは16ではありません!)

これらのプロジェクトの両方に外部JARを追加し、\ extras \ android \ v4を指すようにしました。また、libsフォルダーにあったv4 jarも削除しました。

すべてのプロジェクトをクリーンアップして、再ビルドします。

ヴォイヤ!

私が受け取っていた正確なエラー: dexを実行できません:複数のdexファイルがLandroid / support / v4 / view / PagerAdapterを定義しています。Dalvik形式への変換に失敗しました:dexを実行できません:複数のdexファイルがLandroid / support / v4 / view / PagerAdapterを定義しています。


36

この問題が発生していました。libsフォルダーにgson-2.2.2.jarという外部.jarがありましたが、何らかの理由で、gson-2.2.2.jarとgson-2.2.2.jar()の2つがありました。 1)、後者を削除しただけで、プロジェクトが再び正常に構築されました。


2
libsフォルダーに古いjarファイルがあり、それを同じワークスペースの新しいjarにリンクした場合も、同様の問題がありました。ADTが同じシンボルの複数の定義を見つけると、次のようなエラーが発生します。libsフォルダー内の古いjarファイルを削除すると、修正されました。
フィアット2013年

外部jarが問題の原因の1つであり、私の場合もそうでした。/libs以前の実験で残ったjarが残っていたため、ライブラリプロジェクトとそれから生成された.jarの両方が生成されました。そのjarを削除/libsすると問題が解決します。+1
ripopenid 2013

31
  1. 日食を閉じます。
  2. プロジェクトフォルダ内のbinフォルダを削除します。
  3. 日食を開始し、プロジェクトをクリーンアップします。
  4. これで実行すると、問題は解消されます

マテウスViccariの答えは私の問題を解決し、..私は、重複LIBSを除去し、それは魔法のように動作します
swiftBoy

me.Ifのために働いていたmanifest fileから日食によって削除されますbin再びディレクトリ、手動で追加し、クリーンなプロジェクト。
Mehul Joisar 2013年

私のために働く。また、同じ.jarが2つの異なる場所にないことを確認してください(私の場合、ライブラリプロジェクトとそのライブラリプロジェクトを参照しているプロジェクトの両方にありました。Eclipseが何らかの理由で自動的に追加したようです)
Magnus W

私にとっては、ワークスペース全体をクリーンアップしました。プロジェクトをクリーニングするだけでは不十分でした。私の問題は、クリーンな操作の最中にプロジェクトの1つを「ライブラリ」に切り替えることに関係していると思います
技術

私の場合は役に立ちませんでした
redux '28年

26

他の人が述べたように、これはビルドパスに同じクラスの複数のコピーがある場合に発生します-クラスパスにbin /を含めることは、この問題を保証する1つの方法です。

私の場合、これはandroid-support-v4.jarをlibs /フォルダーに追加したときに発生し、どういうわけかEclipseが2番目のコピーをbin / classes / android-support-v4.jarに追加しました。

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

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

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


23

私にとっては、プロジェクトを右クリックする->ビルドパス->ビルドパスを構成する->ライブラリ->依存関係を削除する

それが機能した後。


20

このエラーは、同じクラス名を含む2つのjarがある場合に発生する可能性があります。たとえば、2つのライブラリjsr311-api-1.1.1.jarとjersey-core-1.17.1.jarがあり、どちらもクラスjavax.wsを含んでいる.rs.ApplicationPath。jsr311-api-1.1.1.jarを削除したところ、問題なく動作しました。


1
これは私にとって完璧なソリューションです。同じライブラリを2回追加しました。ありがとう。
swiftBoy 2013年

19

android-support-v4.jarへの依存関係がすでにあるプロジェクトにfacebooksdk.jarを追加した後、このエラーが発生しましたfacebooksdk.jarにはすでに独自のandroid-support-v4.jarが含まれているため、競合が発生しました。以前のandroid-support-v4.jarをプロジェクトのプロパティ/ Java ビルドパス /ライブラリから削除すると、問題が解決しました。


18

Project / propertiesとJava Build Pathに移動し、Android Private Librariesオフにします。

これもこの種のエラーの別のケースです

できた


15

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

編集:無視してください。私のmaven依存関係とlibsフォルダーに同じjarがありました。libフォルダーにあるものを削除しました。


2
ビルドパスからAndroidの依存関係を削除すると、プロジェクトが壊れました。幸い、プロジェクトを右クリックして[Androidツール]> [プロジェクトのプロパティを修正]を選択すると、簡単に復元できました。
azdev 2013年

場合によっては、Androidの依存関係を削除して再生成すると、いくつかの問題が解決します。しかし、私の編集のようにそうではありません。
Hadi Tok 2013年

9

おそらくr14をインストールしています。このエラーは、プラットフォームツールの更新が原因で発生した可能性があります。sdkを再インストールする必要があります


私はSDKを完全に吹き飛ばし、ダウンロードしたzipファイルから新しくインストールして、Android SDK ManagerでAndroid APIをロードしました。私は高い希望を持っていましたが、問題は解決しません。
テリー

Windowsには.android隠しフォルダーがあります。それも削除する必要があります。
リノ

同じ問題が存在する
マクラン2014

9

私にとってこの問題は、私のプロジェクトにAndroidライブラリプロジェクトが含まれている場合にのみ発生します。したがって、すべてのライブラリを削除して、先ほど述べたように実行すると、アプリを再度実行できます。ライブラリが含まれている場合、bin-removal-trickトリックでさえ機能しません。

ADT 14を数日間使用しているため、このバグが今日最初に発生した理由がわかりません。でも私を幸せにしてくれる他のバグがありました。


ソリューションの多くはいくつかのブードゥー教材のように見えます... :)
Jasper

8

binフォルダーを削除するだけでは不十分で、genフォルダーも削除しました。その後、2回再構築した後、dexエラーメッセージが表示されなくなりました。


8

プロジェクトエクスプローラープロジェクトを選択し、右クリックして[ プロパティ ] -> [ Javaビルドパス ] -> [ ソース] -> [ソースフォルダーの出力フォルダーを許可する]チェックボックスをオンにします。


私の事件を助けなかった。
2015年

8

基本的に同じ問題に直面していた。BINフォルダーを削除してから、注文とインポート用の未使用のjarファイルをEclipseから削除しました。それはその後働いた


7

私はこのパーティーに遅れましたが、後で再び見つけることができるように自分の経験を追加します:)

Android SDKとEclipseアドインをアップグレードした後、この問題に遭遇しました。アップグレードは罰せられません!

私の問題はライブラリプロジェクトに関連していました。私のアプリは標準のJavaプロジェクトとAndroidライブラリプロジェクトの両方を参照しています。Javaビルドパス設定のソースリストにAndroidライブラリプロジェクトのsrcおよびresフォルダーが含まれていることに気付きました(ソースのbinが問題であると言及しているすべての人に賛成、srcとresも問題でした)。

だから解決策は:

  1. ソースリストとプロジェクトリストの両方の設定のJavaビルドパスセクションから、参照されているすべてのAndroidライブラリソースとプロジェクト参照を削除します。
  2. クラスがapkに含まれるように、プロジェクトリストに純粋なJava依存関係がリストされ、[順序とエクスポート]タブでチェックされていることを確認してください
  3. チェックされたSDKバージョンの下のライブラリセクションで、プロジェクトプロパティのAndroidセクションにすべてのAndroidライブラリの依存関係がリストされていることを確認します。

これらすべてを他のソリューションからつなぎ合わせるのは順調でした!ふew!


よく述べました!私は多くの仕事の後に同じ結論に達しました。ライブラリプロジェクトに他のライブラリプロジェクトまたは純粋なJavaの依存関係が含まれている場合、それらをすべて同じ方法で追加する必要があることを追加したいと思います。そうしないと、このエラーが発生します。すべてのプロジェクトについて上記のルールに従う場合、問題はありません。
strangeluck

1
もう1つ...プロジェクトまたはライブラリプロジェクトのAndroidプライベートライブラリをエクスポートする必要がない場合は、エクスポートしないでください。複数のプロジェクトまたはライブラリプロジェクトがエクスポートすると、複数のdexファイルエラーが発生します。
strangeluck

6

adt 14から15にアップグレードしたときにこれに遭遇し、それを機能させるために、.eclipseフォルダーを(設定と共に)削除し、adt 15を再インストールしました。


6

binディレクトリの削除に関するTerrysの応答とANTディレクトリの場所に関するLarrysを読んだ後:

私は自分のプロジェクトのBINディレクトリにあるファイルをBIN / CLASSESに移動して、実行しています。

編集1次に2回目の実行に失敗しました... doh

編集2そのように閉じたEclipseはファイルを元の場所に戻し、そのすべてが機能しています...ええと?これがうまくいった理由を私は知らないふりをしません。変更がある場合は更新されます。

編集3バックアップから、BINディレクトリとBIN / CLASSESに実際に重複したファイルがあったことを確認しました。

したがって、答えは、両方の場所にファイルを置かないことです。少なくとも私にとっては、それがうまくいきました。


答えを減らすようにしてください:役立つ結論に続いて事実裏付ける。歴史物語のAMAPは避けてください。人々はそれを「答えではない」と考えてそれを報告する傾向があります。
Brock Adams

それを乾杯、私のとりとめのないものを明確にするためのどんな助けでもありがたいです
HostMyBus

6

eclipse.iniファイルを変更し、最大メモリパラメータを

-Xmx1024m

次に、コンピュータを再起動します。

それは私のために働いた。


1
何も関係ありません。メモリを増やしても依存関係の問題は解決しません
Sierisimo

6

私が信じている解決策を見つけましたか?

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;

それが言うところ:「Lcom / coremedia / iso / AbstractBoxParser $ 1」は、たまたま私がインポートしたライブラリの場所であり、それが問題の原因でした。com.codemedia.iso.AbstractBoxParser $ 1.classと.AbstractBoxParser.class ....を探して、そのjarを取り出し、それをアンパッケージし、両方のファイルを削除してから、.zipとして再パッケージし、ライブラリに追加し、クリーンアップして動作しました!私にとってこれ以上の衝突はありません!(更新も追加ダウンロードもありません)


6

私のlibsフォルダーには、2つの異なるバージョンのCordova .jar-filesがあり、使用していないバージョンを削除したところ、すぐに機能しました。以前気づかなかったので奇妙だった。


5

ADT R14アップデートは、クラスがbin / classesディレクトリに移動する場所を変更します(http://tools.android.com/recent/buildchangesinrevision14を参照)。ANTを使用している場合は、クラスのパスをbinからbin / classesに変更する必要があります。これでうまくいきました。


私はEclipseを使用しています。Eclipseでクラスパスをどこで変更するか知っていますか?
テリー、

5

私のための解決策:

  1. コードをバックアップしてください!
  2. プロジェクトではなくプロジェクトワークスペースに移動し、次のコマンドを実行します。

    dev1:workspace $ cd〜/ Documents / workspace / .metadata / .plugins / dev1:workspace $ rm -rf org.eclipse.core.resources

  3. Eclipseディレクトリに移動して、次のコマンドを入力します。

    dev1:eclipse $ ./eclipse clear

  4. Eclipseは空のワークスペースから始まります-プロジェクトがまだそこにあることを心配しないでください。単純に既存のリソースから新しいプロジェクトを作成し、物事は肉汁でなければなりません。

私が受け取っていた正確なエラー:[2012-02-07 14 :15: 53-Dex Loader] dexを実行できません:複数のdexファイルがLandroid / support / v4 / view / PagerAdapterを定義しています。[2012-02-07 14:15:53-ProjectCloud] Dalvik形式への変換に失敗しました:dexを実行できません:複数のdexファイルがLandroid / support / v4 / view / PagerAdapterを定義しています。


5

AndroidManifestで指定された同じパッケージ名のライブラリプロジェクトがいくつかあります(そのため、R.javaによって重複するフィールド名が生成されません)。Manifest.javaが複数回作成されないようにエラーを削除するには、すべてのライブラリプロジェクトのAndroidManifest.xmlから権限とアクティビティを削除する必要がありました。うまくいけば、これは誰かを助けることができます。


4

運が悪い他のすべての提案を試した後、プロジェクトの「bin」ディレクトリの内容をすべて削除してから、Eclipseをもう一度実行すると、うまくいきました。


4

非ライブラリプロジェクトをライブラリプロジェクトに変換しましたが、以前にビルドされたjarファイルがlibsフォルダーにありました。このjarファイルを削除すると、このエラーは発生しなくなりました。


4

私は同じ問題に直面していて、アプリを2回ロードしたjarファイルをプッシュしているときに、そのため複数のdexエラーが発生しました。


4

[私のために解決]

重複するライブラリ「JARファイル」を削除してから、BuildConfig.javaファイルを削除し、プロジェクトとその作業をクリーンアップします。

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