Mam problem z uruchomieniem aplikacji na Androida, która działała poprawnie do czasu dodania drugiej biblioteki zewnętrznej do ścieżki kompilacji. Od czasu dodania słoika scoreninja otrzymuję teraz NoClassDefFoundError, gdy próbuję uruchomić aplikację.
Oto wiadomość:
02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter
Ponieważ wszystkie skrypty kompilacji są generowane przez narzędzia Android (?), Nie jestem pewien, co jeszcze mogę zrobić oprócz czyszczenia i przebudowywania lub ponownego uruchamiania zaćmienia (już wypróbowałem wszystkie trzy). Czy ktoś wie, jak mogę to zmienić?
Odpowiedzi:
Miałem ten problem po aktualizacji ADT.
Przechowywałem wszystkie moje pliki JAR w folderze o nazwie „lib” i dodawałem słoiki do ścieżki kompilacji w normalny sposób Eclipse. Działało dobrze do mojej aktualizacji.
Po mojej aktualizacji otrzymywałem błąd NoClassDefFoundError dla klasy, którą wyraźnie mogłem zobaczyć w słoiku (sprawdzanie klas ReferencedLibraries).
Rozwiązaniem było usunięcie moich słoików ze ścieżki kompilacji i zmiana nazwy folderu „lib” na „libs”. Jest to konwencja mrówek, która wydaje się być sposobem, w jaki nowy ADT znajduje i dołącza biblioteki do pliku .apk. Gdy to zrobiłem, wszystko działało dobrze.
źródło
Nie musiałem umieszczać biblioteki jar w zasobach lub bibliotekach, ale zaznaczam tylko pole dla tego jar w oknie Właściwości -> Ścieżka kompilacji Java -> „Zamów i eksportuj” (była wcześniej wymieniona, ale nie została wybrana )
źródło
Dodając zewnętrzny słoik do ścieżki kompilacji, po prostu dodaje słoik do pakietu, ale nie będzie on dostępny w czasie wykonywania.
Aby słoik był dostępny w czasie wykonywania , musisz:
assets
folderemźródło
import
instrukcji dla zewnętrznych plików jar? Nigdy ich nie użyłem.assests
podejścia do folderu?Miałem to dla MapActivity. Buduje w Eclipse dostaje NoClassDefFound w debuggerze.
Zapomniałem dodać bibliotekę do manifestu, wewnątrz
<Application>...</Application>
elementuźródło
Zmieniłem kolejność dołączonych projektów (Eclipse / Configure Build Path / Order and Export). Przeniosłem moje dwa zależne projekty na szczyt listy „Zamów i eksportuj”. Rozwiązało to problem „NoClassDefFoundError”.
To jest dla mnie dziwne. Nie słyszałem o znaczeniu kolejności włączonych bibliotek i projektów. Android + Eclipse to świetna zabawa :)
źródło
Nie jestem pewien, czy jest to powiązane, czy nawet wciąż szukasz odpowiedzi, ale natknąłem się na ten wątek, próbując znaleźć ten sam błąd (ale być może z różnych powodów).
Nie mogłem znaleźć żadnych rozwiązań online, ale odpowiedź na podobny wątek skłoniła mnie do myślenia i zdałem sobie sprawę, że prawdopodobnie po prostu potrzebuję odbudować (lub wyczyścić) projekt.
W Eclipse przejdź do Project => Clean. Wybierz swój projekt, a Eclipse sam go naprawił. Dla mnie to rozwiązało problem.
Mam nadzieję że to pomoże.
źródło
Application
klasę, co prowadzi do innego błędu.Spotkałem ten sam problem. Powodem było to, że biblioteka, której próbowałem użyć, została skompilowana ze standardowym JDK 7.
Zrekompilowałem go z
-source 1.6 -target 1.6
opcjami i działało dobrze.źródło
To samo działało dla mnie: Właściwości -> Ścieżka kompilacji Java -> „Zamów i eksportuj” Co ciekawe - dlaczego nie dzieje się to automatycznie? Chyba brakuje jakiegoś ustawienia. To samo wydarzyło się po aktualizacji SDK.
źródło
Kliknij prawym przyciskiem myszy folder projektu, poszukaj właściwości w ścieżce kompilacji Java i wybierz widoczne pliki jar. To zadziałało dla mnie.
źródło
John O'Connor ma rację. Problem dotyczy instalacji programu ADT 17 i nowszych wersji. Znaleziono ten link do naprawy błędu:
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
źródło
Próbowałem wszystkiego z tego postu (i niektórych innych postów), ale to nie działało dla mnie, jest to zdecydowanie najstraszniejsza aktualizacja ADT, jakiej doświadczyłem, i nigdy nie zaktualizuję się bez działającej kopii zapasowej ADT.
Udało mi się go rozwiązać, usuwając projekt, a następnie dodając go ponownie za pomocą źródłowej kopii zapasowej.
źródło
Miałem ten sam błąd z ADT22. Rozwiązano go, sprawdzając „Prywatne biblioteki Androida” we właściwościach -> Ścieżka kompilacji Java -> Zamów i eksportuj. Jeśli korzystasz z jakichkolwiek projektów bibliotecznych, to samo należy zrobić również dla nich.
źródło
Wszystkie istniejące odpowiedzi nie działają dla mnie, ponieważ moja sprawa jest nieco inna. Uruchomienie go zajęło mi kilka godzin. Używam Eclipse.
Mój projekt na Androida zawiera inny normalny projekt Java 1.6, który wymaga pliku jar innej firmy. Sztuką jest:
Mam nadzieję, że pomoże to tym, którzy mają podobne scenariusze, jak mój.
źródło
czasami trzeba wziąć cały projekt zewnętrzny jako bibliotekę, a nie tylko słoik:
mój problem rozwiązany przez dodanie całego projektu (w moim przypadku google-play-services_lib) jako biblioteki, a nie tylko słoika. kroki do tego (od odpowiedzi @ style ):
źródło
Czasami dzieje się tak z powodu niewłączenia jar, na który masz zależność, ze znacznikiem „uses-libary” w pliku AndroidManifest.xml.
Upewnij się także, że powinien znajdować się wewnątrz znacznika „application”.
Pozdrowienia,
Ravi
źródło
Miałem ten problem i był on spowodowany brakiem „eksportowania” biblioteki. Problem polegał tylko na tym, że pliki .class dla niektórych klas nie są dostępne podczas pakowania pakietu APK. Czas kompilacji będzie działał bez wyrzucania
W moim przypadku korzystałem z klasy „CusrsorAdapter” i pod „JavaBuildPath-> Zamów i eksportuj” nie sprawdziłem obsługi jar V4. Po wybraniu problemu problem zniknął.
Aby upewnić się, że otrzymujesz błąd noClassDefFound z powyższego powodu, sprawdź logacat, zobaczysz nieznany błąd superklas w czasie wykonywania.
źródło
Rzeczywiście osiągnąłeś niesławny problem z limitem 64k, musisz włączyć multidex.
Tak to się robi. https://developer.android.com/tools/building/multidex.html
źródło
Próbowałem różnych rzeczy, a przyczyną błędu w moim przypadku był konflikt między maps.jar i Google Api w Java Build Path-> Libraries. Więc kiedy usunąłem maps.jar, działało dobrze.
Pozdrowienia,
wahib
źródło
upewnij się, że plik jar znajduje się w katalogu libs twojego projektu, ponieważ używasz nowszej wersji ADT wraz z zaćmieniem.
źródło
Mam dokładnie ten sam problem ... Aby to naprawić, po prostu usunąłem swoje prywatne biblioteki Lib z Androidem w „ścieżce kompilacji” i kliknąłem ok ... a kiedy ponownie otworzyłem op w „ścieżce kompilacji”, zaćmienie dodało je ponownie, a potem zadziałało dla mnie;) ...
źródło
Spędziłem dwa dni próbując rozwiązać ten problem po aktualizacji ADT. w końcu miałem szczęście, że dostałem ten post tutaj:
https://code.google.com/p/android/issues/detail?id=55304
co poprowadziło mnie we właściwym kierunku. postępując zgodnie z rozwiązaniem - pamiętaj o zastąpieniu biblioteki obsługi Androida wszystkich swoich projektów do tej samej wersji (usuń ją i zainstaluj ponownie w projektach). mam nadzieję, że to pomoże - powodzenia
źródło
Jeśli wolisz wiedzieć, które pliki dotyczą tego obejścia, oto, co znalazłem. Po prostu zmień plik .classpath na
Zamień plik .classpath we wszystkich projektach bibliotecznych i w głównym projekcie Androida. Plik .classpath znajduje się w folderze głównym projektu zaćmienia. Oczywiście, nie zapomnij dodać własnych wpisów ścieżki klasy, jeśli takie posiadasz (porównaj z aktualną wersją ścieżki .classpath).
Uważam, że jest to ten sam wynik, co przejście przez menu zaćmienia, jak wyjaśniono powyżej w komponavt-user (Eclipse / Konfiguruj ścieżkę kompilacji / Zamów i eksportuj).
źródło
Rozwiązaniem tutaj pracował dla mnie. Chodzi o zaimportowanie biblioteki do folderu libs, następnie zmodyfikowanie pliku build.gradle, a następnie wyczyszczenie za pomocą gradlew.
źródło
Jeśli zmienisz zamówienie i wyeksportujesz ścieżkę kompilacji projektu, ten błąd nie wystąpi. Innym sposobem osiągnięcia tego jest ścieżka .classpath w folderze projektu.
źródło
Spróbuj tego:-
Krok 1
Dodaj wszystkie biblioteki, aby zbudować pat w Eclipse (oznacza, że wszystkie biblioteki będą odwoływać się do bibliotek)
Krok 2
Usuń plik R.java i ponownie skompiluj projekt. Nie martw się, R.java zostanie automatycznie odtworzona.
Wyluzuj :)
źródło
Jak zrozumiałem, twój projekt nie pokazuje błędów, ponieważ umieściłeś słoik. Ale słoik nie zostanie użyty, gdy Twój projekt zostanie „wyeksportowany” na urządzenie. Spróbuj tego
Projekt -> Właściwości
Ścieżka kompilacji Java / zamówienie i eksport
[✔] Twój słoik
źródło
Zdarza mi się to bardzo często.
Ostatnim razem, kiedy to się stało, pamiętam, było to spowodowane przełączeniem Eclipse ADT (edycja specjalna Google) na Android Studio i powrotem. Zasadniczo wypróbowałem wszystkie metody, które można znaleźć w stosie przepływu, które nie działały dla mnie.
W końcu udało mi się ponownie uruchomić aplikację (koniec z NoCalssDeffoundError), zmieniając IDE na oryginalne Eclipse (Kepler) za pomocą ADT.
źródło