„Konwersja do formatu Dalvik nie powiodła się z błędem 1” na zewnętrznym pliku JAR

908

W mojej aplikacji na Androida w Eclipse pojawia się następujący błąd.


NIEoczekiwany wyjątek na najwyższym poziomie : java.lang.IllegalArgumentException: już dodano: Lorg / xmlpull / v1 / XmlPullParser;
....
Konwersja do formatu Dalvik nie powiodła się z błędem 1

Ten błąd pojawia się tylko wtedy, gdy dodam określony zewnętrzny plik JAR do mojego projektu. Długo szukałem możliwego rozwiązania, ale żadne z możliwych rozwiązań nie działa.

Próbowałem nawet przejść na system Android 1.6 zamiast 1.5 (obecna wersja, której używam).

Michel
źródło
Ten element może pomóc w naprawieniu tego błędu w przypadku korzystania z projektu biblioteki w obszarze roboczym.
Nguyen Minh Binh
4
Próbowałem tego i dał ten sam błąd. W końcu to naprawiłem, dodając bibliotekę w Właściwości-> JavaBuildPath-> Projekty i dodając tam bibliotekę. Nazywa się „Wymagane obiekty na ścieżce kompilacji:”.
27
Ten problem stał się dla mnie brutalny. Prawie wystarczy zrezygnować z kodowania Androida. Żadne z rozwiązań nie działa dla mnie. Po prostu muszę ciągle próbować eksportować błąd z błędem Dalvik 1 i ostatecznie się to uda. Kompilacja wersji zajmuje 15-30 minut. To kompletna katastrofa.
Anthony
Jeśli korzystasz z dwóch komputerów w jednym obszarze roboczym z oprogramowaniem do udostępniania plików, czasami duplikuje obszar roboczy-> projekt-> bin-> com jako com 1, com 2. Po prostu usuń wszystko za pomocą 1 lub 2, wyczyść projekt i jesteś gotowy iść.
Ozan Atmar

Odpowiedzi:

826

Przejdź do projektu »Właściwości» Ścieżka kompilacji Java »Biblioteki i usuń wszystkie oprócz„ Android XY ”(w moim przypadku Android 1.5). Kliknij OK. Przejdź do Projekt »Wyczyść» Wyczyść wybrane projekty poniżej »wybierz projekt i kliknij OK. To powinno działać.

Możliwe jest również, że plik JAR znajduje się gdzieś w folderach projektu (skopiowałem plik JAR Admob do mojego folderu src), a następnie dodałem go jako bibliotekę Java Path Library. Nie pojawia się w Eksploratorze pakietów, więc go nie zauważasz, ale jest liczony dwukrotnie, co powoduje przerażający błąd Dalvik 1.

Innym możliwym powodem mogą być konflikty nazw pakietów. Załóżmy, że masz pakiet com.abc.xyzi klasę o nazwie A.javawewnątrz tego pakietu, a także inny projekt biblioteki (który jest dodawany do zależności tego projektu), który zawiera ten sam com.abc.xyz.A.java, to otrzymasz ten sam błąd. Oznacza to, że masz wiele odniesień do tego samego pliku A.javai nie możesz go poprawnie zbudować.

Innymi sposobami może się to zdarzyć, jeśli przypadkowo lub świadomie edytujesz / dodajesz coś w pliku ścieżki klasy ręcznie. W niektórych przypadkach możemy ręcznie dodać ścieżkę android.jar do pliku ścieżki klas w celu wygenerowania dokumentu java. Usunięcie tego po wygenerowaniu javadoc kod będzie działał poprawnie. Sprawdź to również, jeśli nadal występuje.

408841
źródło
4
Miałem ten sam problem i powyższe kroki wykonane przez użytkownika 408841 działały dla mnie.
Arunabh Das
112
Cześć. Naprawia to dla mnie, przechodząc do „Projekt» Wyczyść »Wyczyść wybrane projekty poniżej» wybierz swój projekt i kliknij OK. ” ignorując 1. bit
Kurru
79
Jestem dość mylący z tym rozwiązaniem. Jeśli usuniesz wszystkie pliki jar i biblioteki, jak zamierzasz pomyślnie skompilować projekt?
Cheok Yan Cheng
3
Odkryłem, że jedynym sposobem, w jaki to działało, było CZYSZCZENIE WSZYSTKICH PROJEKTÓW! Zwłaszcza te, od których zależy przestępczy projekt.
Roy Hinkley,
7
Jestem nowy w programowaniu Androida pochodzącym z .NET i, szczerze mówiąc, ten błąd jest ucieleśnieniem mojego doświadczenia z nim. Poważnie ... co masz zrobić z tym komunikatem o błędzie? To całkowicie bez znaczenia. „Dalvik” ?? Ty co?? Wróć do studia wizualnego: p
David Masters
271

Rozwiązałem problem.

Jest to konflikt pliku JAR.

Wygląda na to, że mam dwa pliki JAR na ścieżce kompilacji, które zawierają ten sam pakiet i klasy.

smack.jar i android_maps_lib-1.0.2

Usunięcie tego pakietu z jednego z plików JAR rozwiązało problem.

michel
źródło
18
+1 - Podsumowując, jest to konflikt plików JAR. W szczególności może to być konflikt w dowolnych dwóch plikach JAR. W moim przypadku wystąpił konflikt między jackson-all-1.7.4.jar, jackson-core-asl-1.5.4.jar i jackson-mapper-asl-1.5.4.jar. Usunąłem dwa JAR 1.5.4 i zostawiłem wszystkie 1.7.4.
jmort253
Jeśli masz słoiki w projektach bibliotecznych, które dodałeś do swojego projektu, na przykład w jaki sposób dodałem ScoreloopUIprojekt do mojej gry AndEngine, słoiki te również zakłócają twój, nawet jeśli nie są na ścieżce kompilacji twojego projektu.
pqn
1
Ręcznie podałem android-sdk / platform / android-10 / android.jar ręcznie w .classpath, a następnie zmieniłem na 2.3.3 (Android 10) we właściwościach projektu, co spowodowało konflikt obu android.jar. Usunięcie dodatkowej ścieżki Java Build Path
załatwiło sprawę
2
Po mojej stronie konflikt pochodził z ActionbarSherlock, który już zawiera pakiet wsparcia Androida, który git zawarł dwukrotnie.
Tobias
Tylko dla informacji: w moim przypadku z powodu niepowodzenia było tak, że inny cel Androida nie był taki sam w obu projektach: android: targetSdkVersion = "xx"
Andreas Mattisson
126

Rozwiązanie Windows 7:

Potwierdzono, że przyczyną problemu jest linia poleceń ProGuard w pliku
[katalog instalacyjny zestawu SDK systemu Android] \ tools \ proguard \ bin \ proguard.bat

Edytuj następujący wiersz rozwiąże problem:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

do

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
Noego
źródło
to nie działało dla mnie, ale skomentowanie linii proguard z mojego pliku default.properties sprawiło, że błąd zniknął. mój problem wydaje się być w jakiś sposób związany z postępem. Otrzymałem tylko komunikat „Konwersja do formatu Dalvik nie powiodła się z błędem 1” podczas próby wyeksportowania projektu. jakieś pomysły?
Ben H
spróbowałem ponownie powyższą sugestię, usunąłem i ponownie dodałem mój projekt biblioteki LVL, a teraz działa. nie jestem pewien, co dokładnie to naprawiło, ale działa. dzięki Bogu. zmarnowałem na to godziny.
Ben H
Windows Vista i to zadziałało dla mnie. Wcześniej próbowałem zmienić ścieżkę SDK na progra ~ 2, ponownie instalować, czyścić projekt, usuwać biblioteki i naprawiać itp. Więc dziękuję Noah!
Mudar
Dziękuję bardzo Noah, to działało dla mnie również w systemie Windows 7. Błąd pojawił się po aktualizacji ADT do wersji 12.
Kevin
Rozwiązałem mój problem dotyczący Windiws 7.
poiuytrez
94

Możesz łatwo rozwiązać ten problem (za pomocą Eclipse Android Developer Tools, Build: v22.0.1-685705), wyłączając menu> „Projekt”> „Twórz automatycznie” podczas eksportowania (nie) podpisanej aplikacji Android. Następnie nie zapomnij włączyć go ponownie.

Ton Snoei
źródło
2
To rozwiązało w moim przypadku. W przeciwnym razie problem występuje sporadycznie i bez ostatecznej przyczyny (np. Zły słoik lub ścieżka)
Dirk Conrad Coetsee
To doprowadzało mnie do szału! Jedyne rozwiązanie, które działało dla mnie. Zastanawiać się, dlaczego.
PrivusGuru
1
To rozwiązało dla mnie - inne rozwiązania również mogły pomóc, ale to było ostatnie, zanim zaczęło działać.
pertz
Spędziłem 4 godziny pracując nad każdą sugestią, którą mogłem znaleźć, i w końcu dotarłem do tej. Dzięki - natychmiast rozwiązało problem.
Squonk
Bardzo proste rozwiązanie, ale działa! Uratowało mi kilka godzin bezcelowej walki z Eclipse. Wypróbuj zanim wypróbujesz bardziej skomplikowane rozwiązanie.
fragon
53

Jeśli masz wersję ADT 12+, powinieneś zaktualizować swój proguard z 4.4 -> 4.6 (jak opisano tutaj) ). Powinieneś również zostawić plik ... \ bin \ proguard.bat w oryginalnej formie.

Wystarczy pobrać go z Internetu i skopiować folder lib z pobranego pakietu do:

[Katalog instalacyjny zestawu SDK systemu Android] \ tools \ proguard \ lib

Kocus
źródło
3
To był mój problem z wieloma ADT. Pobieranie i zastępowanie plików JAR proguard działa.
Pan S
Wow, dzięki, to naprawiło to dla mnie, chociaż musiałem również usunąć niektóre ostrzeżenia. stackoverflow.com/q/4525661/38258
Nick Gotch
zmieniłem wersję proguard z 4.4 na 4.9, po czym mój problem nadal nie został rozwiązany.
Hiren Patel
1
Musiałem to zrobić sam, przechodząc od wersji 4.7 -> 4.11 (najnowsza wersja tutaj: sourceforge.net/projects/proguard/files ). Właśnie zmieniłem nazwę starego katalogu <sdk>/tools/proguardi przeniosłem cały rozpakowany katalog proguard4.11na starą ścieżkę. Voila! Teraz gdybym tylko mógł odzyskać poprzednią godzinę ... -_-
qix
1
Dzięki! to rozwiązuje mój problem. Mój problem pojawia się, gdy aktualizuję sdk z menedżera sdk, a program proguard został zresetowany do oryginalnej wersji, która została dostarczona z interfejsem API na poziomie 11. Po zaktualizowaniu programu proguard, jar do najnowszej wersji. i to działa! Moje odniesienie: java.dzone.com/articles/my-reminder-how-fix-conversion
mmw5610
41

EDYCJA (nowe rozwiązanie):

Wygląda na to, że poprzednie rozwiązanie jest tylko obejściem. W końcu udało mi się ostatecznie rozwiązać problem na stałe: w moim przypadku wystąpiło niedopasowanie w plikach android-support-v4 w moim projekcie oraz w projekcie Facebook, do którego odwołuje się mój projekt.

Znalazłem ten błąd, wykonując Lint Check (Android Tools / Run Lint: Check for Common Errors)

Moje poprzednie rozwiązanie:

Wypróbowałem jakiekolwiek możliwe rozwiązanie na tej stronie - nic nie pomogło !!!

Wreszcie znalazłem odpowiedź tutaj: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Proste kroki:

Przejdź do projektu -> odznacz Kompiluj automatycznie

Przejdź do Projekt -> Wyczyść ..., wyczyść zarówno projekt biblioteki, jak i projekt aplikacji

Wyeksportuj aplikację jako podpisany plik APK, gdy Kompiluj automatycznie jest nadal wyłączona

Paveliko
źródło
Dziękuję, że pracowałeś dla mnie dla mojego projektu cocos2dx js przy użyciu ADT Eclipse 23
snowflakes74
Błąd: nieznana opcja „0409” w argumencie nr 1
Iman Marashi,
30

Oto kolejny scenariusz i rozwiązanie:

Jeśli napotkasz ten problem niedawno po zaktualizowaniu narzędzia ADT dla środowiska Eclipse:

  1. W projekcie aplikacji sprawdź, czy nie ma połączonych folderów źródłowych wskazujących projekty biblioteczne (mają nazwy w postaci „LibraryName_src”).
  2. Wybierz wszystkie te projekty, kliknij prawym przyciskiem myszy, wybierz „ Kompiluj ścieżkę ” -> „ Usuń ze ścieżki kompilacji ”.
  3. Wybierz „ Odłącz również folder od projektu ” i kliknij „ Tak ”.
  4. Oczyść, przebuduj i ponownie wdróż projekt.

Wydaje się, że powodem jest to, że niektóre poprzednie wersje dołączonych folderów źródłowych projektu Biblioteki ADT do projektów „potomnych”, a obecna kombinacja ADT / Dex nie jest już zgodna z tym rozwiązaniem.

EDYCJA: potwierdza to wpis na Android Dev Blog, a konkretnie ten - patrz ósmy akapit dalej.

TheTerribleSwiftTomato
źródło
1
To zdecydowanie najbardziej pomocna odpowiedź na mój konkretny problem . Dziękuję bardzo!!!
Bill The Ape
Z tego mogłem skorzystać z powodzeniem, a nie wysoko ocenionej odpowiedzi użytkownika 408841.
rics
29

Przejdź do projektu, a następnie odznacz „Kompiluj automatycznie”. Następnie spróbuj wyeksportować projekt i błąd zniknie.

kgandroid
źródło
27

Może to być również spowodowane dodaniem Android.jarpliku do ścieżki kompilacji, na przykład przez przypadkową szybką poprawkę w środowisku Eclipse. Usuń go prawym przyciskiem myszy Projekt -> ścieżka kompilacji -> skonfiguruj ścieżkę kompilacji -> android.jar , usuń.

Tom Dignan
źródło
25

Po prostu czyszczenie projektu działało dla mnie za każdym razem, gdy pojawiał się ten błąd.

BTR
źródło
Ponownie uruchomiłem Eclipse + czyszczenie projektu + ręczna kompilacja.
dodgy_coder
Czyszczenie działało dla mnie .... więc jeśli masz dobrą wersję do debugowania, którą uruchomiłeś na rzeczywistych telefonach, a następnie przejdź do wydania eksportu i zobaczysz ten błąd ... najpierw wyczyść wszystkie projekty.
Lepert
16

Moje własne i jedyne rozwiązanie, które znalazłem dzisiaj po czterech godzinach testowania wszystkich rozwiązań, jest kombinacją wielu rozwiązań tutaj:

  • Delete projekt z Eclipse
  • Usuwać pliki \binoraz \genz folderu projektu
  • Usuń odniesienia do bibliotek do .classpathpliku w głównym folderze projektu
  • Uruchom ponownie Eclipse za pomocą wiersza poleceń: eclipse -clean
  • Import projekt
  • Kliknij prawym przyciskiem myszy na projekcie - wybierz Properties> Java Build Path> Librariesi usuń wszystko inne niżAndroid XX.Y
  • Na koniec cleanprojektu, poczekaj na automatyczny budynek lub Buildto
  • Uruchom i teraz działa! Przynajmniej dla mnie...

Próbowałem na każdym kroku na raz i wiele kombinacji, ale udało się to tylko z rzędu wszystkich kroków na raz! Mam nadzieję, że już więcej się nie spotkam ...

Darkendorf
źródło
Anonimowy użytkownik otrzymał ostrzeżenie, że ma to katastrofalne skutki. Spróbuj na własne ryzyko!
PaulG
działało to dla mnie, ale nie zrobiłem: „zaćmienie - wyczyść” i nie usunąłem bibliotek.
NicoMinsk,
Usunięcie binfolderu zrobiło to dla mnie.
boltup_im_coding
14

Tylko dla innych osób, które nadal mają ten problem i próbowały powyższych odpowiedzi, ale wciąż otrzymywały błąd (co było moim przypadkiem), moim rozwiązaniem było usunięcie projektu z Eclipse i ponowne zaimportowanie go ponownie.

To spowodowało, że biblioteka Androida została ponownie dodana do moich bibliotek, do których się odwołujemy, więc teraz mam odwołania do dwóch plików JAR Androida, stąd usunąłem jeden z nich i teraz kompiluje się dobrze.

Rozwiązanie: Usuń projekt z Eclipse IDE, a następnie ponownie go zaimportuj, a następnie sprawdź powyższe rozwiązania.

Peter Mortensen
źródło
Dzięki! To pomogło mi od zera.
herbertD
10

Wpadłem dzisiaj na ten problem. Czyszczenie i przebudowa nie rozwiązały problemu. Usunięcie i ponowne zaimportowanie projektu również nie pomogło.

W końcu prześledziłem to z powrotem do złych dodatków do mojego pliku .class. Myślę, że zostało to dodane przez narzędzia wtyczek, gdy próbowałem naprawić inny problem, usuwając go pozbyłem się błędu kompilacji „Konwersja do formatu Dalvik nie powiodła się z błędem 1”:

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>

Joe Fernandez
źródło
9

Dla mnie na mojej ścieżce kompilacji pojawiło się dodatkowe odniesienie do JAR. Usunąłem to i działa teraz.

brux
źródło
8

Mój problem był spowodowany przez ADT w wersji 12.0 i integrację ProGuard. Ten błąd jest dobrze udokumentowany, a rozwiązanie znajduje się w dokumentacji

Rozwiązanie jest tutaj

Linia poleceń ProGuard

Croc
źródło
Dzięki Croc, nie sądzę, że błąd jest bardzo dobrze udokumentowany - nie znalazłem go po godzinie poszukiwania rozwiązania.
Kevin
Prawdopodobnie piszesz - problem polega na tym, że pojedynczy komunikat o błędzie ma zbyt wiele przyczyn. Google powinien mieć więcej wiadomości, aby pomóc użytkownikom nakreślić problem. Możesz uzyskać pociechę, ponieważ rozwiązanie problemu zajęło mi dwa dni ...
Croc
Komentarz 11 na połączonej stronie dyskusji o błędzie rozwiązał problem tutaj: ustaw wyjście kompilacji na Verbose (z Windows> Preferencje> Android> Kompilacja) i poszukaj JAR lub klas używanych przez kompilator, ale nie powinno tam być. Usuń ich. Doświadcz kompilacji bez żadnych problemów.
Giulio Piancastelli
8

Rozwiązałem ten problem, używając biblioteki Sherlock ActionBar w moim projekcie. Możesz zrobić następujący krok, to dla mnie działa.

  1. Kliknij projekt prawym przyciskiem myszy, wybierz właściwości.
  2. Pojawi się okno dialogowe, wybierz opcję „Ścieżka kompilacji Java” w menu po lewej stronie.
  3. Usuń „Zależności Androida” i „Prywatne biblioteki Androida” z prawego panelu, a następnie kliknij OK
  4. Wyczyść swój projekt (wybierz menu Projekt -> Wyczyść)
  5. Kliknij projekt prawym przyciskiem myszy, wybierz Narzędzia Android -> Napraw właściwości projektu
  6. Jeszcze raz wyczyść projekt.
  7. Zrestartuj swój komputer
  8. Otwórz aplikację Eclipse i Export

Mam nadzieję, że ci to pomoże.

mvmanh
źródło
Ich komunikat o błędzie powinien być bardziej precyzyjny. Oszczędzasz mój czas. Dzięki.
teapeng
7

W moim przypadku problem dotyczy projektu API OpenFeint. Dodałem OpenFeint jako projekt biblioteki:

projekt biblioteki]! [1]! [Wpisz opis obrazu tutaj.

Jest również dodawany do ścieżki kompilacji, narzędzia ADT 16 dają błąd w tym sceneario.

Kliknij prawym przyciskiem myszy swój projekt i kliknij ścieżkę kompilacji, skonfiguruj ścieżkę kompilacji, a następnie zobacz obraz i usuń stąd projekt OpenFeint i wszystko gotowe :)

Wpisz opis zdjęcia tutaj

AZ_
źródło
7

Znalazłem coś innego. Android używa /libskatalogu do plików JAR. Wielokrotnie widziałem błąd „Konwersja do formatu Dalvik nie powiodło się z błędem 1”, zawsze gdy popełniłem błąd w moich plikach JAR.

Teraz zaktualizowałem Roboguice do nowszej wersji, umieszczając nowy plik JAR w /libskatalogu i zmieniając ścieżkę klasy do nowej wersji. To spowodowało błąd Dalvik.

Kiedy usunąłem jeden z plików JAR Roboguice z /libsfolderu, błąd zniknął. Najwyraźniej Android pobiera wszystkie pliki JAR /libs, bez względu na to, które z nich określisz w ścieżce kompilacji Java. Nie pamiętam dokładnie, ale myślę, że Android zaczął /libsdomyślnie korzystać z Androida 4.0 (Ice Cream Sandwich, ICS).

Peter Mortensen
źródło
7

Aktualizacja Proguard do najnowszej wersji rozwiązała to dla mnie.

  • Moja ścieżka rozwoju była C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • Pobrałem nową wersję stąd
  • i zastąpił foldery bin i lib

DZIĘKI BOGU!

Pinhassi
źródło
7

Ogólnie wydaje się, że ten problem występuje, gdy w ścieżce kompilacji znajdują się niepotrzebne pliki JAR.

Napotkałem ten problem podczas pracy nad IntelliJ IDEA . Dla mnie tak się stało, ponieważ dodałem biblioteki JUnit i Mockito, które były kompilowane w czasie wykonywania. To musiało być ustawione na „testowanie” we właściwościach modułu.

mindReader
źródło
Dziękuję za wspomnienie: „Ogólnie wydaje się, że ten problem pojawia się, gdy na ścieżce kompilacji są niepotrzebne słoiki”. Po usunięciu niepotrzebnych plików jar zniknął błąd. :)
surendran
6

Żadne z wcześniej zaproponowanych rozwiązań nie działało dla mnie. W moim przypadku problem pojawił się, gdy przełączyłem się z odwoływania się do folderu z kodem źródłowym biblioteki na używanie biblioteki JAR. Początkowo był projekt biblioteki Androida wymieniony w sekcji Projekt aplikacji Android Właściwości \ strona Android \ Biblioteka, a biblioteka porównywana również w drzewie eksploratora projektu jako łącze do katalogu źródłowego biblioteki.

Po pierwsze usunąłem łącze do katalogu z drzewa projektu i dodałem bibliotekę JAR do ścieżki kompilacji, ale spowodowało to wyjątek.

Prawidłowa procedura to (po zmianie ścieżki kompilacji i umieszczeniu odwołania do źródła biblioteki):

  • poprawnie usuń link do katalogu źródłowego biblioteki, usuwając faktycznie odwołanie ze strony projektu właściwości aplikacji \ Android

  • dodanie biblioteki JAR biblioteki do ścieżki kompilacji projektu aplikacji w zwykły sposób.

superjos
źródło
6

Żadne z wymienionych rozwiązań nie działało dla mnie.

Oto gdzie miałem problem:

Dodałem zewnętrzny plik JAR jSoup do ścieżki mojego projektu, najpierw umieszczając go w folderze źródłowym o nazwie „libs”, a następnie klikając go prawym przyciskiem myszy, Ścieżka kompilacji -> dodaj do ścieżki kompilacji. To spowodowało błąd konwersji Dalvik. Powiedział, że „już włączyłem” klasę z tego pliku JAR. Rozejrzałem się po katalogu projektu i stwierdziłem, że miejscem, w którym został „już uwzględniony”, jest binkatalog. Usunąłem plik JAR z binkatalogu i odświeżyłem projekt w Eclipse i błąd zniknął!

Andrew
źródło
5

Wszystkie powyższe rozwiązania nie działały dla mnie. Nie używam żadnych wstępnie skompilowanych plików .jar. Używam błędów LVL i Dalvik, gdzie wszystkie związane są z biblioteką licencji rynkowych.

Problem został rozwiązany przez usunięcie głównego projektu i ponowne importowanie (utwórz nowy projekt z istniejących źródeł).

olivierg
źródło
5

Miałem ten sam problem i żadne z tych rozwiązań nie zadziałało. Wreszcie zobaczyłem w konsoli, że błąd był spowodowany zduplikowaną klasą (jedna w istniejącym projekcie, jedna w dodanym pliku jar):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

Więc sprawdź, czy dodajesz słoik ze zduplikowanymi klasami w swoim projekcie. Jeśli tak, spróbuj usunąć jeden z nich.

To zadziałało dla mnie.

Seynorth
źródło
patrz moja odpowiedź: stackoverflow.com/questions/2680827/…
Michel
5

Często dla mnie czyszczenie projektu NIE naprawia tego problemu.

Ale zamknięcie projektu w Eclipse, a następnie jego ponowne otwarcie wydaje się naprawiać go w tych przypadkach ...

Andrew
źródło
1
To samo dla mnie, zamknięcie Eclipse i ponowne uruchomienie zwykle rozwiązuje to. Potem próbuję, ale nie mogę dokonać drugiego eksportu, muszę ponownie uruchomić.
Ted
5

Wpadłem na ten problem, ale moje rozwiązanie było dwojakie. 1.) Musiałem dodać docelową wersję Androida w ramach projektu -> właściwości -> Android . 2.) Nie miałem wszystkich „dodatków stron trzecich” Google. Kliknij w menedżerze AVD SDK w ramach dostępnych pakietów -> zewnętrzni dodatki -> Google Inc . Pobrałem wszystkie zestawy SDK i to rozwiązało mój problem.

THE_DOM
źródło
Moje rozwiązanie było prawie takie samo jak rozwiązanie @THE_DOM. Kliknij projekt prawym przyciskiem myszy, wybierz Narzędzia Android, a następnie wybierz Dodaj bibliotekę zgodności. Spowoduje to pobranie tych „dodatków stron trzecich”, jeśli ich nie masz (rozwiązanie THE_DOM), ale także doda je do twojego projektu. Czy to rozwiązanie jest tylko placebo, czy nie, dopiero się okaże. :)
Chris,
5

Używam Androida 1.6 i miałem jeden zewnętrzny plik JAR. To, co zadziałało, to usunięcie wszystkich bibliotek, kliknięcie projektu prawym przyciskiem myszy i wybranie Narzędzia Android -> * Napraw właściwości projektu (które dodało system Android 1.6), a następnie dodaj ponownie zewnętrzny plik JAR.

Jim Rhodes
źródło
5

Natknąłem się na ten problem, ponieważ wtyczka Android-Maven w Eclipse najwyraźniej nie rozpoznawała referencji przechodnich i referencji, do których odwoływały się dwa razy z kilku projektów (w tym projektu biblioteki Androida), i obejmowała je więcej niż raz. Musiałem użyć hokusa-pokusa, aby wszystko zawrzeć tylko raz, mimo że Maven ma się tym zająć.

Na przykład miałem podstawową bibliotekę globalmentor-core, która była również używana przez globalmentor-google i globalmentor-android (z których ta ostatnia jest biblioteką Androida). W globalmentor-android pom.xmlmusiałem oznaczyć zależność jako „pod warunkiem”, a także wykluczyć z innych bibliotek, w których został przejściowo włączony:

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

Następnie w końcowej aplikacji pom.xmlmusiałem zastosować właściwą sztuczkę, aby umożliwić tylko jedną ścieżkę włączenia --- a także nie zawierać jawnie biblioteki podstawowej:

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
Garret Wilson
źródło
Dziwne było dla mnie to, że <extractDuplicates>true</extractDuplicates>we wtyczce android-maven naprawiono problem, mvn installale nie w mvn deployprzypadku, gdy dostałem opisany błąd ... naprawdę dziwne
Karussell
5

W moim przypadku

project-> właściwości-> ścieżka kompilacji Java -> w zakładce kolejności i eksportu -> odznacz android-support-v4.jar

Mufra
źródło
5

Po prostu wyczyść projekt

Jeśli to nie zadziała, wypróbuj inne rozwiązania

Yassin
źródło
plus 1 za proste rozwiązanie
Shylendra Madda
Potrzebuję też zrestartować Eclipse.
Dino Tw