RuntimeException: ไม่สามารถสร้างอินสแตนซ์แอปพลิเคชันได้


97

เมื่อฉันเรียกใช้แอปพลิเคชันของฉันทุกครั้งที่ฉันได้รับข้อยกเว้นด้านล่างใน logcat ของฉัน:

 04-14 09:29:53.965: W/dalvikvm(1020): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
    04-14 09:29:53.985: E/AndroidRuntime(1020): FATAL EXCEPTION: main
    04-14 09:29:53.985: E/AndroidRuntime(1020): java.lang.RuntimeException: Unable to instantiate application   android.app.Application: java.lang.NullPointerException
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.access$1300(ActivityThread.java:123)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.os.Handler.dispatchMessage(Handler.java:99)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.os.Looper.loop(Looper.java:137)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at java.lang.reflect.Method.invokeNative(Native Method)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at java.lang.reflect.Method.invoke(Method.java:511)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at dalvik.system.NativeStart.main(Native Method)
    04-14 09:29:53.985: E/AndroidRuntime(1020): Caused by: java.lang.NullPointerException
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.getClassLoader(LoadedApk.java:305)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     at android.app.LoadedApk.makeApplication(LoadedApk.java:474)
    04-14 09:29:53.985: E/AndroidRuntime(1020):     ... 11 more

หมายเหตุ: เมื่อฉันถอนการติดตั้งแอพจากโปรแกรมจำลองและเรียกใช้ฉันจะไม่ได้รับข้อยกเว้นนี้ แต่เมื่อฉันเรียกใช้แอปพลิเคชันที่ติดตั้งใหม่ในโปรแกรมจำลองฉันได้รับสิ่งนี้ กรุณาช่วย.


1
ถ้าแพ็คเกจของคุณเป็น android.app.Application ให้ลองเปลี่ยนชื่อแพ็คเกจดูน่าสงสัยดูเหมือนแพ็คเกจของ System
ไม่เว้นว่าง

ตรวจสอบให้แน่ใจว่าแอปของคุณได้รับการประกาศในไฟล์ Manifest
dcow

ขยายบรรทัดสาเหตุจาก: java.lang.NullPointerException ควรมีการอ้างอิงถึงบรรทัดในใบสมัครของคุณเพิ่มเติม
Zaid Daghestani

ไม่ฉันไม่มีแพ็คเกจอย่างที่คุณพูดถึงในแอปพลิเคชันของฉัน แอปถูกประกาศใน Manifest เป็น: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.infy.meetingmanager.activity" android:versionCode="1" android:versionName="1.0" > <application...> <activity android:name=".LoginActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
user182944

แอปของคุณใช้ Android เวอร์ชันใด 4.0
yorkw

คำตอบ:


194

นี่คือข้อความแสดงข้อผิดพลาดที่เกิดขึ้นโดยเฟรมเวิร์กพื้นฐานเมื่อ dalvik ติดตั้งไฟล์. apk อีกครั้งและพยายามใช้ซ้ำหรือรีไซเคิลกิจกรรม / มุมมองที่เปิดก่อนหน้าจากแพ็คเกจเดียวกัน (หากคุณยังไม่ได้ปิดแอปที่ติดตั้งก่อนหน้านี้) ไม่มีส่วนเกี่ยวข้องกับแอปของคุณยิ่งไปกว่านั้นไม่น่าเป็นไปได้มากที่แอปของคุณจะหยุดทำงานหรือหยุดทำงานเนื่องจากข้อความแสดงข้อผิดพลาดแบบละเอียดนี้ในอุปกรณ์ของผู้ใช้ปลายทาง

ดูเหมือนว่าบันทึกข้อผิดพลาด dalvik verbose นี้เกิดขึ้นเฉพาะในระบบ Android 4.0 เท่านั้นฉันได้ทดสอบด้วยตัวเองบนสภาพแวดล้อมการทำงานของ Android 3.2 และ 2.3.3 ซึ่งคุณไม่สามารถทำซ้ำเพื่อให้ข้อความนี้ไม่แสดงบนทั้งสองอย่าง คำถามที่คล้ายกันได้รับการกล่าวก่อนที่นี่และมีคนเต็มไปด้วยรายงานข้อผิดพลาดในAndroid ประเด็นติดตาม

ฉันไม่คิดว่าคุณควรกังวลเกี่ยวกับบันทึกข้อผิดพลาด verbose นี้มากเกินไปในขณะนี้หากคุณดูบันทึกเพิ่มเติมก่อนและหลังข้อผิดพลาดสีแดงนี้ใน Logcat คุณสามารถดูเรื่องราวทั้งหมดและพบว่ากิจกรรม / มุมมองที่เปิดก่อนหน้านี้ (ซึ่ง ถูกทำเครื่องหมายเป็นสถานะเสียชีวิต) ถูกฆ่าและตัวที่ติดตั้งใหม่จะปรากฏขึ้นในที่สุด


2
สวัสดีไม่มีแอปของฉันไม่พังหรือค้างเนื่องจากข้อยกเว้นนั้นมันทำงานได้ดีแม้ว่าจะมีข้อยกเว้น ฉันเพิ่งเห็นข้อยกเว้นใน logcat และไม่รู้ตัวจึงคิดว่าจะถามเหมือนกัน ขอบคุณสำหรับข้อมูลที่มีประโยชน์มาก
user182944

3
ฉันได้รับสิ่งนี้ในคอนโซลนักพัฒนาของแอปพลิเคชันที่ใช้งานจริง ดูเหมือนว่าจะเกิดขึ้นกับ 4.2 เป็นหลัก แต่ฉันเคยเห็นเวอร์ชันอื่นด้วย (4.1, 4.4)
Dustin

3
@ ดัสตินคุณแก้ปัญหานี้หรือไม่? เนื่องจากข้อยกเว้นนี้รายงานมากที่สุด 34 / สัปดาห์! และคำบ่นมากมายในข้อความของผู้ใช้!
thecr0w

1
ฉันยังคงได้รับมันใน Android 5.1.1
แซม

1
มันเกิดขึ้นแม้ใน 5.1.1 เกิดอะไรขึ้น?
นักพัฒนา Android

16

ฉันรู้ว่ามันเป็นคำถามที่เก่ามาก แต่มันก็อาจมีประโยชน์อยู่ดี ฉันพบว่าเมื่อฉันสังเกตเห็นข้อผิดพลาดนี้ในการพัฒนาของฉันเองนั่นเป็นเพราะอินสแตนซ์ที่เรียกใช้ก่อนหน้านี้ของแอปของฉันไม่ได้ปิดตัวลงอย่างเรียบร้อยตัวอย่างเช่นการปิดเธรดพื้นหลังก่อนที่จะออก


ใช่การกดปุ่มโฮมบนโทรศัพท์ของฉันจากนั้นเรียกใช้อีกครั้งจะลบข้อผิดพลาดนี้ให้ฉันเช่นกัน
ผู้รุกราน

สมเหตุสมผล แต่แอปจะปิดลงอย่างเรียบร้อยได้อย่างไรเมื่อเปิดต่อหน้าผู้ใช้แล้ว Android จะฆ่าเพื่ออัปเกรด
แซม

สันนิษฐานว่า Android เรียกใช้เมธอด onDestroy () ในสถานการณ์นั้นใช่หรือไม่? ใคร ๆ ก็หวังเช่นนั้น
JulianSymes

2

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อพยายามเชื่อมต่ออินเทอร์เน็ตด้วย JSOUP ภายในคลาสแอปพลิเคชันของฉัน เป็นเรื่องยุ่งยากเนื่องจากแอปพลิเคชันทำงานบนโปรแกรมจำลอง แต่ไม่ได้ทำงานบนอุปกรณ์จริง ปรากฎว่าฉันเพิ่งใช้ไลบรารี JSOUP ผิด การโหลดหน้าในชุดข้อความใหม่ ช่วยแก้ปัญหาของฉันได้

หวังว่าฉันจะช่วยใครสักคน


2

หวังว่านี่จะช่วยใครบางคนได้ ไปที่แอพที่ทำงานบนโปรแกรมจำลองของคุณโดยคลิกที่นี่:

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ปิดแอพที่คุณพยายามจะติดตั้งแล้วเรียกใช้อีกครั้ง ไม่จำเป็นต้องถอนการติดตั้ง / ติดตั้งแอพใหม่หรือล้างโปรเจ็กต์


1

สำหรับฉันมันช่วยในการทำความสะอาดโครงการ ใน Eclipse:
- Project -> Clean
Please control that Project -> Build Automatically is CHECKED
ถ้า gen-Folder ว่างเปล่าหลังจากนั้นมีข้อผิดพลาดใน res-folder บ่อยครั้งข้อผิดพลาดในโฟลเดอร์ res จะไม่ปรากฏขึ้นโดยกากบาทสีแดง! ขอให้โชคดีและทักทาย


ไม่ได้ช่วยสำหรับฉัน เมื่อฉันใช้adbเพื่ออัปเกรดจากหนึ่งในเวอร์ชันที่ใช้งานจริงไปเป็นอีกแอปหนึ่งปัญหานี้เกิดขึ้นดังนั้นจึงดูเหมือนจะไม่เฉพาะเจาะจงกับ IDE ในกรณีของฉัน
แซม

0

ในกรณีของฉันข้อผิดพลาดนี้ปรากฏขึ้นหลังจากฉันนำเข้าโครงการ Android Maven ไปยังพื้นที่ทำงานใหม่และโฟลเดอร์ SRC ไม่ได้ถูกเพิ่มลงในเส้นทางการสร้างโดยอัตโนมัติ

คลิกขวาที่ project / Build path / Configure build path / Source - ตรวจสอบว่าไม่มีแหล่งที่มาหรือไม่


0

ฉันมีปัญหาเดียวกัน การทำความสะอาดโครงการได้ผลสำหรับฉัน

เลือกโครงการไปที่โครงการ -> ทำความสะอาด


ไม่ได้ช่วยสำหรับฉัน เมื่อฉันใช้adbเพื่ออัปเกรดจากหนึ่งในเวอร์ชันที่ใช้งานจริงไปเป็นอีกแอปหนึ่งปัญหานี้เกิดขึ้นดังนั้นจึงดูเหมือนจะไม่เฉพาะเจาะจงกับ IDE ในกรณีของฉัน
แซม

0

ในกรณีของฉัน logcat แสดงให้ฉันเห็นว่าไม่พบกิจกรรมเริ่มต้น แต่เส้นทาง Dex แตกต่างกันคือ "... / data / app / myapp-1" แทนที่จะเป็น "... / data / app / myapp" . ฉันชอบสิ่งนี้ทำให้คลิกที่ชื่อโครงการ elcipse "myapp" ในหน้าต่าง Package explorer จากนั้นคลิกขวาที่มัน -> refactor-> เปลี่ยนชื่อ ... ฉันตั้งชื่อโปรเจ็กต์เป็น myapp-1 จากนั้น -> refactor-> เปลี่ยนชื่อ ... และกลับไปที่ "myapp" อีกครั้ง แล้วมันใช้งานได้ ... บางส่วนของข้อผิดพลาดในคราส?


0

ฉันมีปัญหาเดียวกัน การถอนการติดตั้งแอพของฉันแล้วติดตั้งใหม่ช่วยแก้ปัญหาได้


0

ฉันพบปัญหานี้เมื่อฉันนำเข้าโครงการซึ่งสร้างจากเครื่องอื่น เพียงแค่ทำให้แคชไม่ถูกต้องและเริ่มต้นใหม่

File> Invalidate Caches / Restart> Invalidate and restart


0

ฉันเปลี่ยน applicationId เป็นอย่างอื่นในไฟล์ build.gradle (Module: app) เรียกใช้แอปอีกครั้งบนอุปกรณ์ของฉัน จากนั้นฉันเลิกทำการเปลี่ยนแปลงและเรียกใช้แอพอีกครั้งและทุกอย่างก็ใช้ได้ ทำงานบน Android Studio 2.3.1 และ 4 อุปกรณ์ที่แตกต่างกันที่ฉันมีที่นี่ตั้งแต่ 5.0 ถึง 7.0


0

ฉันพบกับคำถามนี้ เมื่อใช้งานgradle clean, gradle installDebugทำงาน OK!

   AndroidRuntime  D  Shutting down VM
E  FATAL EXCEPTION: main
E  Process: tv.panda.live.broadcast, PID: 4685
E  java.lang.RuntimeException: Unable to instantiate application tv.panda.live.broadcast.PandaApplication: java.lang.ClassNotFoundException: Didn't find class "tv.panda.live.broadcast.PandaApplication" o
   n path: DexPathList[[zip file "/data/app/tv.panda.live.broadcast-1/base.apk"],nativeLibraryDirectories=[/data/app/tv.panda.live.broadcast-1/lib/arm, /vendor/lib, /system/lib]]
E      at android.app.LoadedApk.makeApplication(LoadedApk.java:572)
E      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4883)
E      at android.app.ActivityThread.access$1500(ActivityThread.java:178)
E      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1573)
E      at android.os.Handler.dispatchMessage(Handler.java:111)
E      at android.os.Looper.loop(Looper.java:194)
E      at android.app.ActivityThread.main(ActivityThread.java:5691)
E      at java.lang.reflect.Method.invoke(Native Method)
E      at java.lang.reflect.Method.invoke(Method.java:372)
E      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
E      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
E  Caused by: java.lang.ClassNotFoundException: Didn't find class "tv.panda.live.broadcast.PandaApplication" on path: DexPathList[[zip file "/data/app/tv.panda.live.broadcast-1/base.apk"],nativeLibraryDi
   rectories=[/data/app/tv.panda.live.broadcast-1/lib/arm, /vendor/lib, /system/lib]]
E      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E      at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E      at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E      at android.app.Instrumentation.newApplication(Instrumentation.java:988)
E      at android.app.LoadedApk.makeApplication(LoadedApk.java:567)
E      ... 10 more
E      Suppressed: java.lang.ClassNotFoundException: tv.panda.live.broadcast.PandaApplication
E          at java.lang.Class.classForName(Native Method)
E          at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E          at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E          at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E          ... 13 more
E      Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

0

วิธีง่ายๆ:

เพียงรีสตาร์ทโปรแกรมจำลองหรืออุปกรณ์มือถือของคุณ และปัญหาจะหมดไป! สาเหตุของปัญหานี้เกิดจากกิจกรรมของแอปก่อนหน้านี้หยุดลงอย่างไม่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.