运行时异常:无法实例化应用程序

102

当我运行我的应用程序时,每次都会在我的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,尝试更改包名,看起来有点可疑,像是系统的包名。 - Its not blank
请确保你的应用在 Manifest 文件中声明。 - dcow
请展开“Caused by: java.lang.NullPointerException”这一行。 你的应用程序中应该有一行参考。 - Zaid Daghestani
不好意思,我在我的应用程序中没有像你提到的那样的包。 应用程序在清单中声明为: package="com.infy.meetingmanager.activity" android:versionCode="1" android:versionName="1.0" > - user182944
你的应用程序运行在哪个Android版本上,是4.0吗? - yorkw
android:versionCode="1" android:versionName="1.0" <uses-sdk android:minSdkVersion="15" /> - user182944
14个回答

195

当Dalvik重新安装.apk文件并尝试从同一包中重用或回收之前打开的活动/视图(如果您尚未关闭先前安装的应用程序),底层框架引发了此冗长的错误消息。与您的应用程序无关,此外,您的应用程序很不可能因为终端用户设备上的这个冗长的错误消息而冻结或崩溃。

看起来这个Dalvik冗长的错误日志仅在Android 4.0系统上发生,我已经在运行Android 3.2和2.3.3的环境中进行了测试,在这些环境中,你无法复制它们的任何一个来显示这个消息。类似的问题曾经在这里讨论过,并且有人在Android Issues Tracker上填写了一个bug报告。

我认为你不必太担心这个冗长的错误日志,如果你在Logcat中查看这个红色错误之前和之后的更多日志,你可以看到完整的情况,并发现之前打开的活动/视图(标记为死亡状态)被杀死,最终重新安装的活动/视图会被弹出。


2
嗨, 我的应用程序既没有因为那个异常而崩溃也没有冻结,即使在抛出异常后它仍然正常工作。我只是在logcat中看到了异常并且不知道它的原因,因此想问一下。 谢谢您提供的信息,非常有用。 - user182944
3
我在一个生产应用程序的开发者控制台中看到了这个。这似乎主要发生在4.2版本,但我也见过其他版本(4.1、4.4)出现此问题。 - Dustin
3
@Dustin,你解决了吗?因为这个异常每周最多会报告34次!而且用户留言中也有很多抱怨! - thecr0w
1
我仍然在Android 5.1.1本地获取它。 - Sam
1
即使在5.1.1上也会发生。发生了什么? - android developer
显示剩余6条评论

16

我意识到这是一个非常老的问题,但这可能仍然有用。我发现当我在自己的开发中观察到这个错误时,这是由于应用程序之前运行的实例没有干净地关闭,例如在退出之前关闭后台线程。


是的,在我的手机上点击主页按钮,然后再次运行这个程序,也能解决这个错误。 - Aggressor
这很有道理,但当应用程序在用户面前打开并且Android将其杀死以升级它时,该如何使应用程序干净地关闭? - Sam
假设在这种情况下,Android会调用onDestroy()方法,对吧?人们会希望如此。 - JulianSymes

2
希望这能帮到某些人。 点击此处,可查看您模拟器上正在运行的应用程序: enter image description here enter image description here 关闭您要安装的应用程序,然后再次运行它。无需卸载/重新安装应用程序或清除项目。

2

当我在应用程序类中尝试使用JSOUP连接到互联网时,我一直收到相同的错误。这很棘手,因为应用程序在模拟器上运行,但在实际设备上运行不了。

后来证明,我只是错误地使用了JSOUP库。在新线程中加载页面解决了我的问题。

希望我能帮助到某个人。


1

对我来说,清理项目很有帮助。 在Eclipse中:
- 项目 --> 清理
请确保“项目 --> 自动构建”已选中
如果此后gen文件夹为空,则res文件夹中存在错误。通常,res文件夹中的错误不会显示为红色叉号! 祝好运,问候。


对我没有帮助。当我使用adb从我的一个生产apk升级到另一个时,就会出现这个问题,因此在我的情况下它似乎不特定于IDE。 - Sam

1

简单解决方法:

只需重新启动您的模拟器或移动设备即可。问题就会消失! 此问题的原因是先前的应用程序活动错误地停止了。


1

当我使用 ksp 而不是 kapt 添加 hilt 依赖时,我收到了这个错误

请更改为

ksp "com.google.dagger:hilt-compiler:$hilt_verson"

kapt "com.google.dagger:hilt-compiler:$hilt_verson"

希望这可以帮到你。

0
我遇到了这个问题。当使用gradle cleangradle installDebug时,它可以正常工作!
   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

我遇到了同样的问题。清理项目对我有用。

选择项目,进入“项目”-->“清理”


对我没有帮助。当我使用adb从我的一个生产apk升级到另一个时,就会出现这个问题,所以在我的情况下似乎与IDE无关。 - Sam

0
在我的情况下,logcat向我显示它找不到初始活动,但Dex路径不同,它是“.../data/app/myapp-1”而不是“.../data/app/myapp”。 我通过在Package Explorer窗口中单击elcipse项目名称“myapp”,然后右键单击它,->重构->重命名...来解决这个问题。 我将项目名称设置为myapp-1,然后,->重构->重命名...并再次改回“myapp”。 然后它就可以工作了...这是eclipse中的某种错误吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接