予期しない上位レベルの例外:java.lang.IllegalArgumentException:既に追加されています

私はAndroidには新しく、このプロジェクトを立ち上げようとしています。このプロジェクトは、構築され、うまく展開されています。しかし、私はEclipseからアプリを起動しようとするたびに、私はこのエラーが表示されます:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/.../model/AvailabilityRequest$DAY_TIME_PREFERENCE;
[2012-02-06 17:32:11 - main-app] Dx     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2012-02-06 17:32:11 - main-app] Dx     at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2012-02-06 17:32:11 - main-app] Dx     at com.android.dx.command.dexer.Main.processClass(Main.java:486)
...
[2012-02-06 17:32:11 - main-app] Dx     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2012-02-06 17:32:11 - main-app] Dx 1 error; aborting
[2012-02-06 17:32:11 - main-app] Conversion to Dalvik format failed with error 1

私はこの愚かなことのために莫大な時間をかけた。明らかに、これは既知の問題ですが、何も私のためには機能しません。
私が持っているもの:

オペレーションシステム - OS X は重要だと思います;
IDE - eclipse 3.7.1
ADT - バージョン:15.0.1.v201111031820-219398
ビルドツール - Maven

What I've tried so far:
- Properties->Java Build Path->Libraries to remove all the libraries except Android x.y.z, then Maven->Update Project Configuration, also to clean the project;
- Magic with closing and reopening eclipse;
- Dances with deleting and recreating the project and the libraries for it (according to the text of error message, there is some duplication of the sources, which are in one of the 2 libraries, used in the main project).

上記のバリアントの1つ(通常は1番目のもの)の後、動作するようになりますが、20分を稼働させたり、数時間かかることがありますが、今日はまったく対応できません。

任意のアイデアをいただければ幸いです。

10
これが見つかりました: code.google.com/p/android/issues/detail?id = 20398#c22 それに関連するものがあるようです。
追加された 著者 makaron,
レスポンスありがとう、リカルド。はい、私は "M2E - Maven Integration for Eclipse"を使用します。質問に何を追加すればよいですか?
追加された 著者 makaron,
m2e-androidを使っていますか?
追加された 著者 Ricardo Gladwell,
もしそうなら、質問を編集してもっと明確にすることができます。
追加された 著者 Ricardo Gladwell,
申し訳ありません、m2eのm2e-android拡張機能を意味します: rgladwell.github.com/m2e-android
追加された 著者 Ricardo Gladwell,

2 答え

Eclipseクラスパスに同じ名前/パッケージの複数のクラスが含まれている場合、ADTはこのような例外をスローします。この場合、Mavenの依存関係で AvailabilityRequest クラスのインスタンスが複数発生しています。

これを解決するには、どのクラスパスの依存関係に同じクラスファイルが含まれているかを調べる(Ctrl-Alt-Tを押し、これを入力するとAvailabilityRequestを入力します)。

You can then open your POM in the m2e POM editor and go to the Dependency Hierarchy tab. This will allow you to select the extraneous dependency, which you can then exclude by right-clicking and selecting "Exclude Maven Artifact..." which will automatically add an element to your POM. This will remove the duplicate JAR from your Eclipse classpath and allow you to build you project.

また、POMにどのような依存関係を追加するかについても注意が必要です。

6
追加された
ありがとう!
追加された 著者 makaron,
リカルド、あなたのサポートのおかげで(+1)、私は解決策を見つけられませんでしたが、私は周りの方法:それは私がこれのすべての目的だったアプリをデバッグすることができます。
追加された 著者 makaron,

さて、私が理解する限り、ここで主なものは、ビルドツールとして maven を使用していたことです。私は問題なくプロジェクトをビルドして展開することができましたが、環境(Eclipse)から開始できませんでした。

If I'm not wrong, when you go to eclipse's Run->Run Configurations and create an Android Application to launch your project, you basically ask eclipse (Android SDK) to build the .apk with Ant for you, not with maven. Eclipse builds the project with Ant and pushes the generated .apk to the device/simulator. But since all the settings of the project are in .pom files, Ant can't build the project and gives the errors of this kind.

Solution:
Start your app right from the device/simulator after you deployed it, not through Run menu. If you want to debug your app, use DDMS' debug, not the one eclipse provides. In case you don't know where DDMS is (like me in my case) - in Mac it's Window->Open Perspective->Other... choose DDMS from menu; you can put it as a bookmark together with eclipse's Debug and Java. In DDMS you'll find all the cool tools, including debug.

P.S.これは初心者から初心者からの返答です...私が間違っている箇所が見えたら、私に知らせてください。私の答えを編集してください。

3
追加された