10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561): at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561): ... 11 more
Nie jestem pewien, co go powoduje, ponieważ jest to poprawnie wymienione w manifeście:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gvg.simid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:name="android.hardware.usb.host" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.gvg.simid.Login"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Dodałem również „Prywatne biblioteki Androida”, aby utworzyć ścieżkę i przeniosłem je na początek „Zamów i eksportuj”, ale nadal wyświetlał ten sam błąd.
EDYCJA: Całkowicie przebudowałem projekt i nie udało mi się odtworzyć błędu. Nie wiem, co było tego przyczyną.
Odpowiedzi:
Miałem ten sam problem w moim projekcie. Stało się to z powodu konfliktu w wersji biblioteki obsługi Androida między moim projektem a projektem biblioteki, który dodałem w moim projekcie. Umieść tę samą wersję biblioteki obsługi systemu Android w dołączonych projektach i projektach biblioteki i wyczyść kompilację ... Wszystko będzie działać ...
źródło
Ta metoda zadziałała dla mnie
project
i wybierzproperties
Java Build Path
->Order and Export
"Android Dependencies"
clean your project
i uciekajźródło
project
? Co to znaczy?Dla tych z Was, którzy mają ten problem na Android Studio, miałem ten sam problem po scaleniu iz jakiegoś powodu jeszcze utrzymywały się po
clean
iinvalidate cash/restart
operacje który doprowadza mnie do szału.Okazuje się, że można to naprawić, uruchamiając raz gradle build z wiersza poleceń. Po prostu uruchom następujące w katalogu projektu:
Mam nadzieję, że zaoszczędzi to komuś straty czasu i frustracji, przez które musiałem przejść.
źródło
Miałem ten sam problem, to działało dla mnie
1) Pełna ścieżka aktywności w mainfestie zamiast ścieżki względnej.
2) Usuń folder „build” i wyczyść projekt.
źródło
Jeśli używasz Eclipse, wypróbuj Projekt -> Wyczyść
źródło
Jeśli dodałeś nowy
Library Project
jako moduł do swojego projektu Android i używaszKotlin
w swojej bibliotece , nie zapomnij dodaćna początek pliku Gradle modułu. Android Studio nie dodaje tej linii podczas tworzenia nowego modułu i może to zmarnować twoje godziny tak jak ja.
Edycja: Po pewnym czasie ponownie zmagałem się z tym problemem i tym razem zapomniałem dodać mój moduł jako zależność od projektu. :)
źródło
Dzieje się tak, jeśli zmienimy ścieżkę budowania aplikacji, może to być w każdym przypadku dodawanie lub usuwanie lub zmiana bibliotek lub pliku .jar. Najlepszym rozwiązaniem jest ponowne uruchomienie Eclipse.
źródło
Jeśli otrzymujesz ten błąd podczas korzystania z nowej funkcji Instant Run w Android Studio 2.0 i nowszych wersjach, oznacza to jakiś błąd po ich stronie.
Aby to naprawić, musisz ręcznie zatrzymać aplikację na urządzeniu / emulatorze, jeśli nie jest zatrzymana, wybierz z Android Studio Build→Rebuild Project.
Następnie kliknij przycisk Uruchom lub SHIFT + F10
źródło
Napisz to dla każdego, kto ma włączoną funkcję multidex
wewnątrz build.gradle
napisz zajęcia
EnableMultiDex
jak poniżeji
AndroidManifest.xml
napisz tę nazwę klasy w tagu aplikacjiźródło
MultiDexApplication
klasy zamiast zApplication
.MultiDexApplication
, a wyjątek zniknął w systemie Android 4.4.Jeśli używasz Multidex na Androidzie 4.4 lub starszym , problem może polegać na tym, że klasa aktywności znajduje się w drugim pliku dex, a zatem nie została znaleziona przez system Android.
Aby zachować swoją klasę aktywności w głównym pliku dex, zobacz tę stronę:
https://developer.android.com/studio/build/multidex.html#keep
Aby znaleźć klasy znajdujące się w pliku dex, użyj Android Studio .
Po prostu przeciągnij i upuść swój apk do Android Studio. Powinieneś być w stanie zobaczyć swoje pliki dex w eksploratorze apk.
Następnie wybierz plik dex, aby zobaczyć, jakie klasy są w środku.
inną alternatywą jest dexdump:
Możesz sprawdzić zawartość swoich plików dex zawartych w apk za pomocą polecenia dexdump, które można znaleźć w
Użytkownicy systemu Windows zobaczą to narzędzie, które stworzyłem, aby ułatwić proces
źródło
W moim przypadku to proces minifikacji proguard spowodował usunięcie niektórych ważnych klas z mojego apk produkcyjnego.
Rozwiązaniem była edycja pliku proguard-rules.pro i dodanie:
źródło
1) Utwórz folder libs w katalogu głównym projektu
2) Skopiuj i wklej do niego plik jar
3) Skonfiguruj ścieżkę kompilacji (Dodaj jar)
4) Wyczyść i uruchom
okrzyki :-)
źródło
Wierz mi lub nie ... Wypróbowałem prawie każdą odpowiedź, którą znalazłem tutaj na stackoverflow. Nic nie pomogło, dopóki nie uruchomiłem ponownie maszyny. Moje Android Studio działa na Ubuntu 16.04 LTS.
źródło
Raz napotkałem ten błąd, kiedy zdefiniowałem klasę, która rozszerzyła widok, ale odniosłem się do tego niestandardowego widoku w pliku układu z niewłaściwą nazwą. Zamiast tego
<com.example.customview/>
umieściłem<com.customview/>
w pliku układu XML.źródło
Napotkałem ten sam problem i rozwiązałem go, wykonując następujące czynności:
Z menu budowania wybierz
1- czysty projekt.
2- Zbuduj APK.
źródło
Spotkałem ten sam problem i zauważyłem, że przykładowy kod został umieszczony w katalogu „java” zamiast w katalogu „src”. Po przeniesieniu kodu do src problem został rozwiązany.
Upewnij się również, że katalog aplikacji jest podzielony na wiele folderów. np.
/main/com/site/appname/
nie/main/com.site.appname/
Mam nadzieję, że to działa ~
źródło
Mam ten sam problem i po wielu pracach i poszukiwaniach znalazłem rozwiązanie: właśnie wyczyściłem projekt, a następnie zbudowałem apk. -Build-> Clean Project -Build-> Build APK (s) Mam nadzieję, że jest przydatny .....
źródło
Niedawno miałem ten problem i używam Android Studio 0.8.4
Problem polegał na tym, że zdecydowałem się zmienić nazwę pliku układu menu XML, który nazywał się main.xml.
Kliknij go prawym przyciskiem myszy i wybierz Refactor -> Rename . Przed zmianą nazwy należy odznaczyć opcję „Szukaj w komentarzach i ciągach znaków” i nacisnąć Refactor .
Ponieważ mój plik pierwotnie nosił nazwę „main” , zmieniono nazwy ścieżek krytycznych w app.iml i build.gradle, głównie java.srcDirs w build.gradle, ponieważ ścieżka jest zdefiniowana jako
'src/main/java'
.Mam nadzieję, że pomoże to każdemu, kto może mieć ten problem.
źródło
Miałem ten problem po uaktualnieniu z wersji 18. Po aktualizacji miałem następujące informacje: Project Build Target to 5.01, targetSDKVersion = 21
Ale: Narzędzia do budowania nadal pochodziły z Androida 4.3.1 (18) Zauważyłem, że te aplikacje, które wywodziły się z ActionBarActivity, zawiesiły się z powyższym błędem i te, które nadal nie działały.
Tak więc prostą poprawką było użycie najnowszego Android SDK Build Tools 21.1.2 zamiast tylko tych z Android SDK Build Tools 18, który wydaje się być domyślny.
Więc winowajcą wydaje się biblioteka Appcompat, której używam do wstecznej kompatybilności Actionbar.
A przy okazji : używając biblioteki appcompat musiałem ustawić / naprawić:
$SDKInstallDIR$\Android\android-sdk\extras\android\support\v7\appcompat\project.properties target=android-21
(co było zalecane w innym przydatnym poście i ma domyślnie wartość 19))źródło
Miałem ten sam problem w systemie Windows. Zmieniłem nazwę ścieżki do projektu na coś zawierającego spację.
Upewnij się, że ścieżka do projektu nie zawiera spacji.
źródło
Rozwiązanie wymienione tutaj -> Rozwiązanie Multidex Issue działało dla mnie. Poniżej znajduje się lista elementów, które należy dodać do kontekstu aplikacji:
źródło
Miałem ten problem, spowodowany kilkoma przyczynami, ale widzę go w Twoim "
**Unable to instantiate activity ComponentInfo{...}: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**
" śladzie stosu. Znalazłem różnicę w moim,.classpath
zanim przestał działać.Dodałem wiersz:
to jest ostateczna wersja:
Teraz działa! =)
źródło
Miałem dokładnie ten sam problem. Jak zasugerował @weiweia, przenieś kod z katalogu java do src. Usunąłem również zależności systemu Android z Project -> Properties -> Java Build Path -> Order and Export, i upewniłem się, że na ekranie Androida uwzględniono tylko projekty biblioteki.
źródło
Miałem ten problem od dłuższego czasu i jak wszyscy inni powyższe odpowiedzi nie dotyczyły mojego projektu.
W moim projekcie połączyłem projekt z moim projektem i wyrzucał ClassDefNotFoundError za każdym razem, gdy wykonywany był jakiś kod dla innego projektu.
Więc to było moje rozwiązanie. Poszedłem do właściwości projektu mojego projektu i ścieżki budowania Java. Nacisnąłem kartę „Source” i „link source” z folderu src innego projektu do mojego własnego projektu i nazwałam nowy folder „core-src”.
Mam nadzieję, że to rozwiązanie komuś pomoże
źródło
Miałem ten sam problem. Używam Xamarin.Android.
Problem w moim przypadku polegał na tym, że zmieniłem versionCode i versionName.
Nie miałem problemu, gdy ustawiłem je w ten sposób:
Problem pojawił się, gdy zmieniłem go na ten (versionCode 2 i versionName 0.0.1):
Naprawiłem problem, zmieniając kod wersji 2 i nazwa wersji 1.0.0.1, na przykład:
Nie jestem pewien, dlaczego był to problem, może Android nie lubi niższej wersji nazwa z wyższym kodem wersji?
Znalazłem następujące na http://developer.android.com/guide/topics/manifest/manifest-element.html#vname
źródło
Na wszelki wypadek, gdyby ktoś napotkał ten sam problem co ja i żadna sugerowana odpowiedź tutaj nie pomaga.
Dla mnie powodem było to, że refaktor studia Android jest wadliwy. Przeniosłem wewnętrzną klasę poza klasę, która była Widokiem i dlatego miała również XML, w którym została ustawiona bezpośrednia ścieżka. Ta ścieżka nie zostanie zmieniona przez studio! I żaden błąd nie zostanie wyrzucony.
Mam nadzieję, że to pomoże każdemu. Twoje zdrowie.
źródło
W naszym przypadku chcieliśmy skompilować wersję Vagrant i mieliśmy ten sam błąd. Naprawiliśmy ją
clean project
irebuild project
w menu Buildźródło
Właśnie zrestartowałem urządzenie i uruchomiłem aplikację. Zadziałało bez żadnych problemów. Mam nadzieję, że to komuś pomoże :)
źródło
Znalazłem ten błąd w Android Studio, kiedy próbowałem debugować na urządzeniu z API 23 , więc sprawdziłem Android Studio i zauważyłem, że nie zainstalowałem tej wersji API 23 . Po instalacji rozwiązałem problem.
źródło
Miałem ten problem kilka razy i często nie robiłem czegoś ewidentnie złego z zależnościami.
Zawsze dobrze jest sprawdzić, czy ta klasa „nie znaleziono” jest obecna w ostatecznej wersji APK. Jeśli tak, jak to się zdarzyło w moich przypadkach, problem zwykle jest następujący:
Nie chodzi o to, że dana klasa nie została znaleziona, ale nie można jej załadować, ponieważ brakuje jej superklasy.
Sprawdź, czy klasa, którą rozszerzasz, jest dostępna, a następnie spróbuj odpowiednio naprawić skrypt kompilacji lub zależności.
źródło