java.lang.RuntimeException: Tidak dapat memulai instantiate ComponentInfo aktivitas

151

Saya mencoba menjalankan kode sampel Saat meluncurkan aplikasi di emulator Android 1.5, saya mendapatkan kesalahan ini .... Adakah yang punya beberapa petunjuk ..?

GALAT dari LogCat:

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

Sunting Kesalahan ini terjadi pada sebagian besar pemula, masalahnya adalah Anda harus menambahkan semua aktivitas Anda di file Manifest.

rahul
sumber
terima kasih Dan Breslau ... Terlihat lebih baik sekarang..bagaimana melakukannya?
rahul
1
Maaf teman-teman ... maaf sudah menunggu waktu Anda .. Saya baru saja lupa menambahkan kelas baru ke file Manifest ..
rahul
1
memperbarui semua alat saya (manajer gerhana & SDK) memperbaikinya untuk saya, serta menambahkan perpustakaan dukungan android ke proyek
Hayden Thring
saya punya masalah ini, lihat ini stackoverflow.com/questions/30473270/…
DanialAbdi

Jawaban:

137

Ini adalah masalah niat Anda.

Silakan tambahkan Activitydi Anda AndroidManifest.xml.

Ketika Anda ingin membuat aktivitas baru, Anda harus mendaftarkannya di AndroidManifest.xml.

Tanmay Mandal
sumber
4
Saya memiliki kelas yang tidak memperluas aktivitas, hanya berisi beberapa fungsi umum; tetapi saya masih mendapatkan pengecualian ini; Mengapa?
Manoj Kumar
Dalam proyek saya ia mengatakan bahwa kelas tidak publik ketika melihat android: name dalam file xml. Ketika saya menambahkan publik sebelum kelas dalam aktivitas utama aplikasi berjalan tanpa masalah. Aneh.
Codebeat
saya memiliki masalah ini di aplikasi asli yang saya kembangkan .. saya menambahkan metode lain di kelas aktivitas, dan saya mulai mendapatkan kesalahan ini .. bagi saya
perbaikan
6
Pilihan lain adalah bahwa aktivitas Anda ada dalam manifes, tetapi dinyatakan sebagai abstract(Saya membuat kesalahan selama refactoring dan pesan kesalahan tidak banyak membantu).
Czechnology
59

Anda mungkin mencoba menemukan tampilan yang sebelumnya onCreate()salah.

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);
  }
  ...
}
SMUsamaShah
sumber
2
Wooo, terima kasih kawan. Anda adalah penyelamat. Ini sangat konyol tapi terima kasih banyak. Sudah menghantui saya selama seminggu sekarang.
meain
melakukan kesalahan yang sama;)
Sumit Jha
Kesalahan yang sama di sini juga. Terima kasih
Pooja
53

Ada cara lain untuk mendapatkan java.lang.RuntimeException: Tidak dapat memulai instantiate aktivitas ComponentInfo pengecualian dan itu adalah aktivitas yang Anda coba untuk memulai adalah abstrak . Saya membuat kesalahan bodoh ini sekali dan sangat mudah untuk diabaikan.

Kevin
sumber
13
Juga, Aktivitas harus bersifat publik (ini adalah kesalahan saya).
djjeck
Maaf mengganggu Anda dua tahun kemudian, tetapi saya bertanya-tanya mengapa Anda tidak dapat memulai aktivitas abstrak?
BenjaminFranklin
2
@BenjaminFranklin Kelas abstrak berarti tidak lengkap, ini bagian yang hilang. Awalan kelas dengan abstrak kata kunci berarti tidak dapat dipakai secara langsung, tetapi hanya melalui pewarisan: dan kelas lain yang menerapkan fitur yang hilang dari kelas abstrak.
Kit10
Saya sudah mewarisi kelas abstrak tetapi masih tidak bisa bekerja. Bisakah Anda jelaskan lebih lanjut ??
Mohammedsalim Shivani
53

Dalam kasus saya, saya lupa menambahkan perpustakaan google maps

<application>
    ....

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

Juga, periksa bahwa Anda tidak melewatkan titik sebelumnya sebelum jalur aktivitas

<activity android:name=".activities.MainActivity"/>
Maragues
sumber
2
Terima kasih, @Maragues !! Itu masalah yang sama! Anda memecahkan masalah saya. :)
cmcromance
27

Gambar

Itu juga terjadi karena masalah ini. Saya menghapus centang toples yang perlu diekspor ke apk dan hal yang sama terjadi. Silakan centang toples yang perlu dijalankan aplikasi Anda

meowmeowbeans
sumber
Penting untuk melihat masalah ini, dan coba setiap komponen ketergantungan dengan benar. Misalnya, pada Android Studio (atau Intellij IDEA) pilih cakupan yang benar untuk dependensi (Disediakan, Kompilasi, ...). Dalam kasus saya, ubah Disediakan untuk Kompilasi dan berfungsi dengan baik.
dayanruben
15

Saya juga mengalami masalah ini, tetapi dengan cara yang sedikit berbeda. Inilah skenario saya:

Detail aplikasi:

  • Menggunakan ActionBarSherlock sebagai pustaka
  • Menggunakan android-support-v4-r7-googlemaps.jar di perpustakaan ActionBarSherlock sehingga saya bisa menggunakan "fragmen peta" di proyek utama saya
  • Menambahkan toples ke jalur pembangunan proyek utama saya
  • Termasuk <uses-library android:name="com.google.android.maps" />dalam manifes proyek perpustakaan dan proyek utama saya (ini mungkin tidak perlu di perpustakaan?)
  • Manifes dalam proyek utama memiliki definisi aktivitas yang tepat dan semua properti yang sesuai
  • Saya tidak memiliki aktivitas abstrak atau gotchas lain yang pernah saya lihat di Stack Overflow yang berkaitan dengan masalah ini.

Namun, saya masih menemukan kesalahan yang dijelaskan dalam pos asli dan tidak bisa menghilangkannya. Masalahnya, sedikit berbeda dalam satu hal:

  • Itu hanya memengaruhi instalasi aplikasi baru ke perangkat saya. Setiap kali aplikasi diinstal untuk pertama kalinya, saya akan mendapatkan kesalahan yang didahului oleh beberapa "peringatan" dari: Tidak dapat menyelesaikan superclass dari FragmentActivity
  • Peringatan-peringatan itu ditelusuri kembali ke perpustakaan ActionBarSherlock
  • Aplikasi akan memaksa tutup dan crash.
  • Jika saya segera membangun kembali dan memindahkan aplikasi, itu berfungsi dengan baik.
  • Satu-satunya waktu crash adalah instalasi yang benar-benar baru. Jika saya mencopot aplikasi, membangun dan menggunakan lagi dari Eclipse, itu akan macet. Membangun / menggunakan yang kedua kalinya, itu akan berfungsi dengan baik.

Bagaimana saya memperbaikinya:

  • Dalam proyek perpustakaan ActionBarSherlock, saya menambahkan android-support-v4-r7-googlemaps.jar ke jalur build
  • Langkah ini sendiri tidak memperbaiki masalah

  • Setelah toples ditambahkan ke path build, saya telah mengubah urutan pada Java Build Path> Order and Export tab - Saya mengatur JAR ke item pertama dalam daftar (itu yang terakhir setelah item / src dan / gen ).

  • Saya kemudian membangun kembali dan memindahkan aplikasi ke perangkat saya - itu berfungsi seperti yang diharapkan pada instalasi baru. Hanya untuk memastikan, saya mencopotnya lagi 2-3 kali dan diinstal ulang - masih berfungsi seperti yang diharapkan.

Ini mungkin kesalahan rookie total, tapi saya menghabiskan cukup waktu menggali posting dan kode saya untuk mengetahuinya, jadi mudah-mudahan ini bisa membantu orang lain. Mungkin tidak memperbaiki semua situasi, tetapi dalam kasus khusus ini, yang akhirnya menjadi solusi untuk masalah saya.

Kyle
sumber
Terima kasih! Ini bekerja untuk saya ketika saya mendapat masalah ini ketika menggunakan contoh Google Adob ​​katalog "adcatalog" dan sedang mendapatkan kesalahan ini. Catatan penting adalah memeriksa kotak centang di sebelah perpustakaan. Dalam kasus saya, dukungan & guci admobsdk.
jsmars
14

Ini mungkin tidak relevan dengan pertanyaan aktual, tetapi dalam contoh saya, saya mencoba menerapkan Kotlin dan ditinggalkan apply plugin: 'kotlin-android'. Kesalahan terjadi karena tidak dapat mengenali MainActivity sebagai file .kt.

Semoga ini bisa membantu seseorang.

Muz
sumber
1
Juga menambahkan classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSIONdi build.gradle utama
Rajkiran
11

Kesalahan ini juga bisa menjadi pertanda utama dari kesalahan bodoh (seperti ketika saya - maksud saya, batuk, seperti ketika teman saya yang menunjukkan kode mereka sekali) di mana mereka mencoba mengeksekusi kode di luar metode seperti mencoba melakukan ini :

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) {
....
}

daripada ini:

SQLiteDatabase db;

@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}
ColossalChris
sumber
1
Bantuan besar Memperbaiki masalah saya dan membuat saya membuat aplikasi android berfungsi penuh pertama saya
TheUnCola
7

Saya menyingkirkan masalah ini dengan menghapus folder Bindan Gendari proyek (yang secara otomatis kembali ketika proyek akan membangun) dan kemudian membersihkan proyek dari -> Menu -> Project -> clean.

Terima kasih.

Jagdeep Singh
sumber
6

Dalam kasus saya, saya belum mengatur setContentView(R.layout.main);

Jika Anda membuat kelas baru, jangan foget untuk mengaturnya pada onCreate(Bundle savedInstanceState)metode ini.

Saya telah melakukan kesalahan bodoh ini beberapa kali.

saji159
sumber
6

Cukup Bersihkan proyek kerja Anda atau mulai ulang gerhana. Kemudian jalankan proyek Anda. ini akan bekerja.

Emran Hamza
sumber
Berkali-kali hal ini terjadi ... Sekarang tidak dapat menyelesaikan file IADL, yang mungkin merupakan akar masalah dan gerhana dikompilasi berdasarkan file lama ... jadi ingatlah untuk membersihkan, memulai ulang, dan mengkompilasi anak-anak .. .
Hunter-Orionnoir
6

Bagi saya, string paket saya AndroidManifest.xmlsalah (disalin dari tutorial). Pastikan string paket dalam file ini sama dengan tempat aktivitas utama Anda, mis

 package="com.example.app"

Cara mudah untuk melakukan ini adalah membuka file AndroidManifest.xml di tab "Manifest", dan ketik di kotak teks di sebelah Paket, atau gunakan tombol Browse.

Juga, string paket untuk aktivitas saya salah, mis

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

Saya (bodoh) mendapat kesalahan yang sama berminggu-minggu kemudian ketika saya mengganti nama nama paket saya. Jika Anda melakukan ini, pastikan Anda memperbarui AndroidManifest.xmlfile juga.

satyrFrost
sumber
5

Ok, saya cukup berpengalaman di iPhone tetapi baru di android. Saya mendapatkan masalah ini ketika:

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

baris kode di atas:

@Override
public void onCreate (Bundle savedInstanceState) {
}

Mungkin saya kurang tidur: P

saya melihat
sumber
2
Saya kurang tidur juga
Oz Mayt
3

Saya baru-baru ini menemukan ini dengan menginstal ulang baru Eclipse. Ternyata tingkat kepatuhan Kompiler saya diatur ke Java 1.7 dan proyek diperlukan 1.6.

Dalam Eclipse: Project -> Properties -> Java Compiler -> JDK Compliance

Tapirboy
sumber
2

Mendapat masalah ini, dan memperbaikinya dengan mengatur properti "mode peluncuran" aktivitas.

Zorglube
sumber
2

Alasan lain dari masalah ini adalah pustaka yang hilang.

Buka Properties -> Android dan periksa apakah Anda menambahkan perpustakaan dengan benar

ayalcinkaya
sumber
1
Periksa juga bahwa pustaka yang ditambahkan memiliki tanda centang pada mereka di Project Properties -> Java Build Path -> Order and Export
Phil
2

Saya memiliki masalah yang sama, tetapi aktivitas saya dinyatakan dalam file Manifest, dengan nama yang benar.

Masalah saya adalah bahwa saya tidak perlu mengimpor perpustakaan pihak ketiga dalam folder "libs", dan saya perlu referensi mereka di proyect saya (Klik kanan, properti, Java Build Path, Libraries, Add Jar ...).

Maria Mercedes Wyss Alvarez
sumber
2

Ini bisa terjadi jika kelas aktivitas Anda ada di dalam paket default. Saya memperbaikinya dengan memindahkan kelas aktivitas ke paket baru. dan mengubah manifes.xml

sebelum

activity android:name=".MainActivity" 

setelah

activity android:name="new_package.MainActivity"
Satthy
sumber
Terima kasih. itu dia.
Stephane
2

Dalam kasus saya, saya mencoba menginisialisasi komponen (UI) bahkan sebelum onCreatedipanggil untuk Kegiatan.

Pastikan komponen UI Anda diinisialisasi / ditautkan dalam onCreatemetode setelahsetContentView

NB: Ini adalah kesalahan pertama saya saat belajar pemrograman Android.

Anup
sumber
2

Bagi saya itu berbeda dari yang di atas,

Aktivitas itu dinyatakan sebagai abstrak, Itu sebabnya memberikan kesalahan. Setelah dihapus itu berhasil.

Sebelumnya

     public abstract class SampleActivity extends AppcompatActivity{
     }

Setelah dihapus

     public class SampleActivity extends AppcompatActivity{
     }
Thriveni
sumber
1

Ini sering terjadi pada saya ketika menggunakan NDK. Saya menemukan bahwa perlu bagi saya untuk melakukan "Bersihkan" di Eclipse setelah setiap kali saya melakukan ndk-build. Semoga ini bisa membantu siapa saja :)

kizzx2
sumber
1

Kesalahan ini juga terjadi ketika Anda menggunakan ActionBarActivitytetapi menetapkan AppCompatgaya non .

Untuk memperbaikinya, atur saja induk gaya aplikasi Anda ke yang Theme.AppCompatseperti ini .:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>
Ostkontentitan
sumber
Bom trabalho @Ostkontentitan! funcionou para mim, obrigado.
Emerson Barcellos
1

Klik kanan pada project> properties> android> dan coba dengan versi android yang berbeda sebelumnya yang saya lakukan dengan android 4.4 kemudian saya ubah ke android 4.3 dan berhasil!

nikhilgotan
sumber
1

Saya memiliki masalah yang sama (Tidak dapat memulai Instansiate Activity):

Alasan pertama:

Saya mengakses

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

sebelum

mCamera = Camera.open();

Jadi cara yang benar untuk dilakukan adalah, buka kamera terlebih dahulu dan kemudian akses parameter.

Alasan kedua: Nyatakan aktivitas Anda di file manifes

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

KETIGA alasan: Nyatakan izin Kamera dalam file manifes Anda.

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

Semoga ini membantu

Sdembla
sumber
1

Dalam kasus saya, saya mencoba menyematkan Facebook SDK dan saya mengalami ID Aplikasi yang salah ; dengan demikian kesalahan muncul. Di file manifes Anda, Anda harus memiliki data meta yang tepat:

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

Jika Anda menginstal Android Studio 2.3.3 dan Android Studio 3.0.0, beralih di antara dua program untuk pengembangan akan menyebabkan kesalahan ini. Ini karena ada situasi di mana kelas yang didukung dalam satu program tidak didukung oleh yang lain dan sebaliknya. Penting untuk menjaga konsistensi di mana versi Android Studio digunakan untuk mengembangkan proyek.

heksikel
sumber
1

Seperti yang disarankan oleh djjeckdalam komentar dalam jawaban ini saya tidak memasukkan publicpengubah untuk kelas saya.

Harus

public class MyActivity extends AppCompatActivity {

Mungkin membantu beberapa orang seperti saya.

Shylendra Madda
sumber
1

Saya sudah mencoba semua solusi di atas tetapi tidak ada yang berhasil untuk saya. setelah saya baru saja menambahkan extendaktivitas alih-alih AppCompatActivitydan bekerja dengan baik.

bekas

public class MainActivity extends Activity  

dari pada

public class MainActivity extends AppCompatActivity 

Saya tidak tahu apa masalah sebenarnya itu.

Sagar Jethva
sumber
0

Ini terjadi pada saya ketika saya mencoba menjalankan Activitypada 2.2 yang menggunakan impor dari Honeycomb tidak tersedia dalam versi Android yang lebih lama dan tidak termasuk dalam paket dukungan v4 juga.

pqn
sumber
0

Aktivitas Baru Anda menambahkan AndroidManifest.xmlseperti".NewActivity"

 </activity>        
    <activity android:name=".NewActivity" />
NagarjunaReddy
sumber