2011-06-22 22 views
8

Ok, to nie ma dla mnie żadnego sensu i nie rozumiem, dlaczego otrzymuję ten błąd w mojej aplikacji. Zarejestrowałem klasę aktywności w androidowym manifeście xml ..Android java.lang.RuntimeException: Nie można utworzyć wystąpienia komponentu ComponentInfo

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobile.batteryhelper/com.mobile.batteryhelper.Battery}: 
java.lang.ClassNotFoundException: Caused by: java.lang.ClassNotFoundException: com.mobile.batteryhelper.Battery in loader dalvik.system.PathClassLoader[/mnt/asec/com.mobile.batteryhelper-1/pkg.apk] 

Tutaj jest plik androidmanifest.xml. Tak, klasa .Battery rozszerza także aktywność.

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Battery" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0
+0

user766380 Jeśli odpowiedź rozwiązała Twój problem, oznacz go jako zaakceptowany. – Edu

+0

Dla mnie rozwiązania były następujące: http://stackoverflow.com/a/21290422/1612469 – Aleks

Odpowiedz

12

Czy próbowałeś wyczyścić swoją przestrzeń roboczą. Przejdź do projektu-> Wyczyść i wybierz swój projekt. Z jakiegoś powodu Eclipse nie tworzy automatycznie mojego manifestu.

+2

Dzięki, że po prostu wchodzę w Projekt> Czystość załatwiła sprawę! Czy istnieje powód, dla którego Eclipse czasami nie tworzy automatycznie manifestu? – user766380

+0

Nie mam pojęcia. Chyba tylko jedno z jego dziwactw. Mogę złożyć raport o błędzie w przyszłości. –

+0

To zadziałało dla mnie ... –

1

Albo twój pakiet manifestu nie jest com.mobile.batteryhelper, albo nie ma com.mobile.batteryhelper.Battery klasy w kodzie. Prawdopodobnie nie masz publicznego konstruktora dla klasy lub klasa nie jest zadeklarowana jako publiczna (chociaż myślę, że w tym przypadku otrzymasz nieco inny komunikat o błędzie).

Upewnij się, że nie używasz ProGuard do usuwania kodu. Upewnij się, że klasa jest publiczna, we właściwym pakiecie (takim samym jak pakiet manifestu) i nie ma konstruktora. Przydałoby się też, gdy cały stos błędów jest indeksowany na wypadek, gdyby było w nim coś pożytecznego.

+0

@ hackbod - czy konstruktor da także błąd? – stack

2

Czy próbowałeś zainicjować coś w swojej klasie przed wywołaniem OnCreate?
Jeśli zainicjujesz zmienne statyczne (na przykład), możesz podać ten (niewiarygodnie rozwlekły) błąd.

2

Właściwie znalazłem moją odpowiedź do tej samej kwestii tutaj: java.lang.ClassNotFoundException on working app

nie podasz nazwę dla tagu aplikacji, tylko działanie. Więc jeśli problem był taki sam jak mój, powinieneś być w stanie usunąć następujące i wszystko będzie działać:

android:. „Battery” name =

1

prawym przyciskiem myszy na swojej klasie baterii> BuildPath> Wykluczenie Then prawym przyciskiem myszy na swojej klasie baterii> BuildPath> Dołącz klasę ponownie

6

trzeba umieścić 3rd biblioteki strona w katalogu biblioteki i odwoływać się do nich. Przejdź do Właściwości/Ścieżka budowania Java/Biblioteki/Dodaj zewnętrzne pliki JAR.

Sprawdź pliki jar w ścieżce Properties/Java Build/Order and Export

1

mam ten problem i go naprawić, przenosząc wszystkie pliki (pliki .jar biblioteki zewnętrzne), które umieszczone w folderze "lib" do " katalog "libs". Jakoś, Eclipse tylko wiedzieć .jar pliki umieszczone w folderze libs

+0

Dzięki, kolego ... To zadziałało –

0

Zobacz dziennik awarii ostrożnie:

loader dalvik.system.PathClassLoader[/mnt/asec/com.mobile.batteryhelper-1/pkg.apk 

Tutaj mnt oznacza zewnętrznej karty SD.

Normalnie, gdy android:installLocation="auto" jest ustawiony w AndroidManifest.xml, jeśli urządzenie nie będzie miał wystarczająco pamięci telefonu, a następnie aplikacja zostaną zapisane na karcie SD.Po usunięciu karty SD z urządzenia urządzenie nie może znaleźć lokalizacji APK, a następnie aplikacja ulega awarii.

Kroki produkować katastrofy:

Issue zdolny do replikacji w wersji 2.3.4 HTC Sensation.

  • Move aplikacji na karcie SD przechodząc do Ustawienia -> Zarządzaj Programy-> Kliknij na aplikacji -> Przenieś na kartę SD
  • wyjąć kartę SD z urządzenia i otwórz aplikację

Jeśli spróbujesz z urządzeniem Samsung, nie wyłączy się, ale nie wyświetli aplikacji po wyjęciu karty SD. To zachowanie dotyczy tylko kilku urządzeń.

2

Miałem ten sam problem. To był bardzo mylący błąd, dopóki nie znalazłem wyjścia. Przejdź do Właściwości> Ścieżka budowania Java> Zamawianie i eksportowanie i przenieś swoje wsparcie dla Androida-v4.jar na górę. Dla mnie to zadziałało. Wypróbuj to.

0

Miałem ten sam problem i rozwiązałem go, aktualizując wtyczkę ADT.

0

można po prostu usunąć aplikację z telefonu komórkowego lub emulatora

0

co pracował dla mnie jest usunięcie najskrytsze plików wewnątrz folderu „budować”, które są pliki wewnątrz generowanego, półproduktów, wyjść i tmp.

Powiązane problemy