java.lang.RuntimeException: ComponentInfo etkinliği somutlaştırılamıyor


151

Ben bir örnek kod çalıştırmak için çalışıyordu android 1.5 emülatörde uygulamayı başlatırken, ben bu hataları var .... Herhangi bir ipucu var ..?

LogCat'ten HATA:

01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.android.test/com.s.android.test.MainActivity}: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Looper.loop(Looper.java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.main(ActivityThread.java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invoke(Method.java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112):   Force finishing activity com.s.android.test/.MainActivity

Düzenle Bu hata, yeni başlayanların çoğunda olur, şey, tüm etkinliklerinizi Manifest dosyasına eklemeniz gerektiğidir.


Teşekkürler Dan Breslau ... Şimdi daha iyi görünüyor ... nasıl yapmalı?
rahul

1
Üzgünüm çocuklar ... zamanını beklediğim için üzgünüm ... Yeni Bildirge dosyasına yeni sınıfı eklemeyi unuttum ..
rahul

1
tüm araçlarımı güncelleme (eclipse & sdk manager) benim için düzeltti ve projeye android destek kütüphanesi ekledi
Hayden Thring

Yanıtlar:


137

Niyetinizin bir sorunu.

Senin eklemek Lütfen ActivityGözlerinde farklı AndroidManifest.xml.

Yeni bir etkinlik yapmak istediğinizde, etkinliğinize kayıt olmalısınız AndroidManifest.xml.


4
Aktiviteyi genişletmeyen, sadece bazı ortak fonksiyonlar içeren bir sınıfım var; ama yine de bu istisnayı alıyorum; neden?
Manoj Kumar

Projemde xml dosyasında android: name'e bakarken sınıfın herkese açık olmadığını söylüyor. Ben ana faaliyet dersten önce kamu eklemek zaman uygulama sorunsuz çalışır. Tuhaf.
Codebeat

ben geliştiriyordu yerel bir uygulama bu sorunu vardı .. ben aktivite sınıfında başka bir yöntem ekledi ve ben bu hatayı almaya başladı .. benim için temiz + yeniden çözüldü ..
ashishsony

6
Başka bir seçenek, etkinliğinizin manifestoda olması, ancak abstract(Yeniden düzenleme sırasında bu hatayı yaptım ve hata mesajı çok yardımcı olmuyor) olarak ilan edildi.
Çek teknoloji

59

Önceden onCreate()yanlış olan görünümü bulmaya çalışıyor olabilirsiniz.

public class MainActivity extends Activity {

  ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect

  @Override
  protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  ...
}

2
Wooo, teşekkürler dostum. Sen bir hayat kurtarıcısın. Oldukça aptalca ama çok teşekkürler. Bir haftadır beni rahatsız ediyordu.
meain

aynı hatayı yapıyordu;)
Sumit Jha

Burada da aynı hata var. Teşekkürler
Pooja

53

Bir java.lang.RuntimeException almanın başka bir yolu daha vardır : ComponentInfo özel durumu etkinliği somutlaştırılamıyor ve başlatmaya çalıştığınız etkinlik soyut . Bu aptal hatayı bir kez yaptım ve gözden kaçırmak çok kolay.


13
Ayrıca, Faaliyet herkese açık olmalıdır (bu benim hatamdı).
djjeck

İki yıl sonra sizi rahatsız ettiğim için üzgünüm, ama neden soyut bir etkinliğe başlayamayacağınızı merak ediyordum?
BenjaminFranklin

2
@BenjaminFranklin Soyut bir sınıf bunun tamamlanmadığı, eksik parçalarının olduğu anlamına gelir. Bir sınıfın abstract anahtar sözcüğüyle ön eklenmesi, doğrudan örneklenemeyeceği anlamına gelir, ancak yalnızca miras yoluyla: ve soyut sınıfın eksik özelliklerini uygulayan diğer sınıftır.
Kit10

Soyut sınıfı devralmıştım ama hala çalışamıyorum. Lütfen daha fazla açıklar mısınız ??
Mohammedsalim Shivani

53

Benim durumumda google maps kütüphanesini eklemeyi unuttum

<application>
    ....

    <uses-library android:name="com.google.android.maps" />
</application>

Ayrıca, etkinlik yolundan önceki önceki noktayı kaçırmadığınızı kontrol edin

<activity android:name=".activities.MainActivity"/>

2
Teşekkürler @Maragues !! Aynı meseleydi! Sorunumu çözdün. :)
cmcromance

27

görüntü

Bu sorun nedeniyle de olur. APK'ya ihraç edilmesi gereken kavanozların işaretini kaldırdım ve aynı şey oldu. Lütfen uygulamanızın çalışması gereken kavanozları işaretleyin.


Bu sorunu görmek ve her bağımlılık bileşenini doğru bir şekilde denemek önemlidir. Örneğin, Android Studio'da (veya Intellij IDEA'da) bağımlılıklar için doğru kapsamı seçin (Sağlanan, Derleme, ...). Benim durumumda, Derleme Sağlandı değiştirin ve iyi çalışıyor.
dayanruben

15

Ben de bu problemle karşılaştım ama biraz farklı bir şekilde. İşte benim senaryom:

Uygulama detayı:

  • ActionBarSherlock'u kitaplık olarak kullanma
  • ActionBarSherlock kütüphanesinde android-support-v4-r7-googlemaps.jar kullanarak birincil projemde bir "harita parçası" kullanabilirim
  • Kavanozu birincil projemin yapım yoluna ekledim
  • Dahil <uses-library android:name="com.google.android.maps" /> kütüphane projesi ve benim birincil projenin hem manifestolarına de (bu kütüphanede gerekli olmayabilir?)
  • Birincil projedeki manifest, uygun aktivite tanımına ve tüm uygun özelliklere sahipti
  • Soyut bir etkinliğim ya da Stack Overflow'da bu sorunla ilgili gördüğüm diğer hiçbir şeyim yoktu.

Ancak, yine de orijinal yayında açıklanan hatayla karşılaştım ve gidermek için alamadım. Ancak sorun, bir açıdan biraz farklıydı:

  • Uygulamanın cihazıma yeni bir yüklemesini etkiledi. Uygulama ilk kez yüklendiğinde, hata birkaç "uyarılarından" önce gelirdi: FragmentActivity üst sınıfı çözülemiyor
  • Bu uyarılar ActionBarSherlock kütüphanesine kadar uzanıyor
  • Uygulama kapanmaya ve çökmeye zorlar.
  • Uygulamayı hemen yeniden oluşturup yeniden dağıtırsam, işe yaradı.
  • Çöktüğü tek zaman tamamen yeni bir kurulumdaydı. Uygulamayı kaldırdım, Eclipse'den yeniden oluşturuldum ve dağıtıldıysam çökebilir. İkinci kez kur / konuşlandır, iyi çalışır.

Nasıl düzelttim:

  • ActionBarSherlock kütüphane projesinde, android-support-v4-r7-googlemaps.jar dosyasını oluşturma yoluna ekledim
  • Bu adım tek başına sorunu çözmedi

  • Kavanoz derleme yoluna eklendikten sonra, Java Derleme Yolu> Sipariş ve Dışa Aktar sekmesindeki sırayı değiştirdim - JAR'ı listedeki ilk öğeye ayarladım (/ src ve / gen öğelerinden sonraki son öğeydi) ).

  • Daha sonra uygulamayı cihazıma yeniden kurdum ve yeniden dağıttım - yeni bir kurulumda beklendiği gibi çalıştı. Sadece emin olmak için, 2-3 kez tekrar kaldırdım ve yeniden yükledim - hala beklendiği gibi çalıştı.

Bu toplam bir çaylak hatası olabilir, ama ben anlamak için mesajlar ve kodumu kazma oldukça zaman geçirdim, bu yüzden umarım başka birine yardımcı olabilir. Tüm durumları düzeltmeyebilir, ancak bu özel durumda, sorunumun çözümü haline geldi.


Teşekkürler! Googles admob sdk örnek "adcatalog" kullanırken bu sorunu var ve bu hatayı alıyorum bu benim için çalıştı. Önemli bir not kütüphanelerin yanındaki onay kutularını işaretlemektir. Benim durumumda destek ve admobsdk kavanozları.
jsmars

14

Bu asıl soru ile ilgili olmayabilir, ancak benim durumumda Kotlin'i uygulamaya çalıştım ve dışarıda kaldım apply plugin: 'kotlin-android' . Hata, MainActivity'yi bir .kt dosyası olarak tanıyamadığı için oldu.

Umarım birine yardımcı olur.


1
Ayrıca classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSIONana build.gradle ekleyin
Rajkiran

11

Bu hata, bunu yapmaya çalışmak gibi bir yöntem dışında kod yürütmeye çalıştıkları aptal bir hatanın nihai işareti olabilir (ben - demek istediğim, öksürük, kodlarını bir kez gösteren bir arkadaşım gibi) :

SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc

@Override
public void onCreate(Bundle savedInstanceState) {
....
}

bunun yerine:

SQLiteDatabase db;

@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}

1
Büyük Yardım. Sorunlarımı
çözdüm ve

7

Projeden Binve Genklasörü (proje oluşturulduğunda otomatik olarak geri dönecek şekilde) silerek ve ardından -> Menü -> Proje -> temizinden temizleyerek bu sorundan kurtuldum .

Teşekkürler.


6

Benim durumumda setContentView(R.layout.main);

Yeni bir sınıf oluşturursanız, onCreate(Bundle savedInstanceState) yöntemi .

Bu aptal hatayı birkaç kez yaptım.


6

Çalışma projenizi temizleyin ya da tutulmayı yeniden başlatın. Ardından projenizi çalıştırın. Çalışacak.


Pek çok kez bu oldu ... Şimdi muhtemelen sorunun kökü olan bir IADL dosyasını çözemiyor ve tutulma eski dosyalara dayanarak derleniyordu ... sooo çocukları temizlemeyi, yeniden başlatmayı ve derlemeyi unutmayın .. .
Hunter-Orionnoir

6

Benim için, benim paket dizesi AndroidManifest.xmlyanlış (bir öğretici kopyalandı). Bu dosyadaki paket dizesinin ana etkinliğinizle aynı olduğundan emin olun, örn.

 package="com.example.app"

Bunu yapmanın kolay bir yolu, AndroidManifest.xml dosyasını "Manifest" sekmesinde açmak ve Paket'in yanındaki metin kutusuna yazmak veya Gözat düğmesini kullanmaktır.

Ayrıca, etkinliğim için paket dizesi yanlıştı, ör.

<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">

Aynı hatayı haftalar sonra paket adımı yeniden adlandırdığımda (aptalca) aldım. Bunu yaparsanız, AndroidManifest.xmldosyayı da güncellediğinizden emin olun .


5

Tamam, iPhone'da oldukça deneyimliyim ama android için yeni. Bu sorunu yaşadım:

Button infoButton = (Button)findViewById(R.id.InfoButton);

yukarıdaki kod satırı:

@Override
public void onCreate (Bundle savedInstanceState) {
}

Belki uykudan mahrum kalabilirim: P


2
Ben de uyku yoksun
Oz Mayt

3

Son zamanlarda bunu Eclipse'in taze yeniden yüklenmesi ile karşılaştım. Derleyici uyumluluk düzeyimin Java 1.7 olarak ayarlandığı ve proje için gerekli 1.6 olduğu ortaya çıktı.

Tutulma: Proje -> Özellikler -> Java Derleyici -> JDK Uyumluluğu


2

Bu sorun var ve etkinliğin "başlatma modu" özelliğini ayarlayarak düzeltildi.


2

Bu sorunun başka bir nedeni eksik bir kitaplık olabilir.

Özellikler -> Android'e gidin ve kitaplıkları doğru şekilde ekleyip eklemediğinizi kontrol edin


1
> Java Build Path - -> Sipariş ve Dışa Ayrıca kütüphaneler proje özellikleri onlara karşı kene işareti eklenen olmadığını kontrol
Phil

2

Aynı sorunu yaşadım, ancak etkinliğim Manifest dosyasında doğru adla bildirildim.

Benim sorunum, bir "libs" klasöründe bir üçüncü taraf kütüphaneleri almak zorunda değildi ve benim proyect (Sağ tıklama, özellikler, Java Derleme Yolu, Kütüphaneler, Kavanoz Ekle ...) onları referans gerekiyordu.


2

Etkinlik sınıfınız varsayılan bir paketin içindeyse bu gerçekleşebilir. Etkinlik sınıfını yeni bir pakete taşıyarak düzelttim. ve manifest.xml dosyasını değiştirme

önce

activity android:name=".MainActivity" 

sonra

activity android:name="new_package.MainActivity"

Teşekkürler. işte bu.
Stephane

2

Benim durumumda, bileşenleri (UI) onCreate Aktivite için çağrılmadan .

Kullanıcı arabirimi bileşenlerinizin aşağıdaki onCreateyöntemde başlatıldığından / bağlandığından emin olunsetContentView

Dikkat: Bu, Android programlamayı öğrenirken ilk hatam.


2

Benim için yukarıdakilerden farklıydı,

Etkinlik soyut olarak ilan edildi, bu yüzden hatayı veriyoruz. Bir kez kaldırıldı çalıştı.

Daha erken

     public abstract class SampleActivity extends AppcompatActivity{
     }

Çıkardıktan sonra

     public class SampleActivity extends AppcompatActivity{
     }

1

NDK kullanılırken bu bana oldukça sık geliyor. Her yaptığımda Eclipse'de "Temiz" yapmamın gerekli olduğunu gördüm ndk-build. Umarım herkese yardımcı olur :)


1

Bu hata, ActionBarActivitybir AppCompatstil kullandığınızda ancak bir stil atamadığınızda da oluşur .

Bunu düzeltmek için uygulama stili üst öğenizi Theme.AppCompatböyle bir tanesine ayarlayın :

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>

Bom trabalho @Ostkontentitan! funcionou para mim, obrigado.
Emerson Barcellos

1

Proje> özellikler> android> üzerine sağ tıklayın ve daha önce android 4.4 ile yaptığım android farklı sürümü ile deneyin sonra android 4.3 değişti ve çalıştı!


1

Aynı sorunu yaşadım (Etkinlik başlatılamıyor):

BİRİNCİ sebep:

Erişiyordum

Camera mCamera;
Camera.Parameters params = mCamera.getParameters();

önce

mCamera = Camera.open();

Bunun için doğru yol, önce kamerayı açmak ve sonra parametrelere erişmek.

İKİNCİ neden: Etkinliğinizi bildirim dosyasında bildirin

<activity android:name=".activities.MainActivity"/>

ÜÇÜNCÜ sebep: Manifest dosyanızda Kamera izni bildirin.

<uses-feature android:name="android.hardware.Camera"></uses-feature>
<uses-permission android:name="android.permission.CAMERA" />

Bu yardımcı olur umarım


1

Benim durumumda, Facebook SDK'sını gömmeye çalışıyordum ve yanlış Uygulama Kimliğine sahiptim ; böylece hata ortaya çıkıyordu. Manifest dosyanızda uygun meta verilere sahip olmalısınız:

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

1

Android Studio 2.3.3 ve Android Studio 3.0.0 yüklüyse, geliştirme için iki program arasında geçiş yapmak bu hataya neden olur. Bunun nedeni, bir programda desteklenen sınıfların diğeri tarafından desteklenmediği veya tam tersi durumların mevcut olmasıdır. Bir proje geliştirmek için Android Studio sürümünün kullanıldığı tutarlılığı korumak önemlidir.


1

Bu cevapta djjeckyorumda önerildiği gibi koymak için özledimpublic sınıfım için değiştirici .

Olmalı

public class MyActivity extends AppCompatActivity {

Benim gibi bazılarına yardımcı olabilir.


1

Yukarıdaki çözümü denedim ama hiçbir şey benim için işe yaramıyor. sonra sadece extendaktivite eklemek AppCompatActivityve iyi çalışıyor sonra .

Kullanılmış

public class MainActivity extends Activity  

onun yerine

public class MainActivity extends AppCompatActivity 

Bu gerçek sorunun ne olduğunu bilmiyorum.


0

Bu Activity, Android'in eski sürümlerinde bulunmayan ve v4 destek paketine dahil olmayan Honeycomb'un ithalatını kullanan bir 2.2'de çalıştırmaya çalıştığımda bana oldu .


0

Sizin Yeni Aktivite eklenti AndroidManifest.xmlgibi".NewActivity"

 </activity>        
    <activity android:name=".NewActivity" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.