RuntimeException:无法实例化应用程序
Posted
技术标签:
【中文标题】RuntimeException:无法实例化应用程序【英文标题】:RuntimeException: Unable to instantiate application 【发布时间】:2012-04-26 09:53:13 【问题描述】:当我运行我的应用程序时,每次我的 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
注意:当我从模拟器中卸载应用程序并运行它时,我没有得到这个异常,但是当我在模拟器中重新运行已安装的应用程序时,我得到了这个。请帮忙。
【问题讨论】:
如果你的包是android.app.Application,试试改包名,有点可疑,好像是System的包。 还要确保您的应用在 Manifest 中声明。 展开 Caused by: java.lang.NullPointerException 行。应该在应用程序中进一步引用一行 不,我没有你在我的申请中提到的任何包。应用在 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" />
您的应用在哪个 Android 版本上运行,4.0?
【参考方案1】:
简单的解决方案:
只需重新启动您的模拟器或移动设备。问题消失了! 此问题的原因是以前的应用活动被错误地停止。
【讨论】:
【参考方案2】:我遇到了这个问题。
当使用gradle clean
,gradle 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
【讨论】:
【参考方案3】:我在 (Module:app) build.gradle 文件中将 applicationId 更改为不同的内容,然后在我的设备上再次运行该应用程序。然后,我撤消更改并再次运行应用程序,一切正常。它适用于 Android Studio 2.3.1 和我这里的 4 种不同设备,从 5.0 到 7.0。
【讨论】:
【参考方案4】:我在导入由另一台机器构建的项目时遇到了这种情况。 只需使缓存无效并重新启动
文件>使缓存无效/重新启动>无效并重新启动
【讨论】:
【参考方案5】:我遇到了同样的问题。卸载我的应用程序然后重新安装它解决了这个问题。
【讨论】:
【参考方案6】:希望这对某人有所帮助。 单击此按钮转到模拟器上正在运行的应用程序:
关闭您尝试安装的应用程序,然后再次运行它。无需卸载/重新安装应用程序或清理项目。
【讨论】:
【参考方案7】:在我的情况下,logcat 显示它找不到初始活动,但 Dex 路径不同,它是“.../data/app/myapp-1”而不是“.../data/app” /我的应用程序”。 我解决了这个问题,在 Package explorer 窗口中单击 elcipse 项目名称“myapp”。然后右键单击它,->重构->重命名... 我将项目名称设置为 myapp-1,然后 ->refactor->rename... 并再次返回“myapp”。 然后它起作用了...... eclipse中的一些错误?
【讨论】:
【参考方案8】:我遇到了同样的问题。清理项目对我有用。
选择项目转到项目 --> 清理
【讨论】:
对我没有帮助。当我使用adb
从我的一个生产 apk 升级到另一个时,会发生此问题,因此在我的情况下,它似乎并不特定于 IDE。【参考方案9】:
当我尝试在我的应用程序类中使用 JSOUP 连接到 Internet 时,我遇到了同样的错误。 这很棘手,因为应用程序在模拟器上运行,而不是在实际设备上运行。 事实证明,我只是错误地使用了 JSOUP 库。 Loading page in new thread 解决了我的问题。
希望我能帮助到某人。
【讨论】:
【参考方案10】:在我的情况下,在我将 Android Maven 项目导入新工作区后出现此错误,并且 SRC 文件夹未自动添加到构建路径中。
右键单击项目/构建路径/配置构建路径/源 - 检查是否缺少源。
【讨论】:
【参考方案11】:对我来说,它有助于清理项目。 在 Eclipse 中: - 项目 --> 清理 请控制项目 --> 自动构建已选中 如果之后 gen-Folder 为空,则 res-folder 中存在错误。通常,res-folder 中的错误不会被红叉显示! 祝你好运和问候
【讨论】:
对我没有帮助。当我使用adb
从我的一个生产 apk 升级到另一个时,会发生此问题,因此在我的情况下,它似乎并不特定于 IDE。【参考方案12】:
我意识到这是一个非常古老的问题,但无论如何这可能很有用。我发现,当我在自己的开发中观察到这个错误时,这是由于我的应用程序之前运行的实例没有整齐地关闭,例如在退出之前关闭后台线程。
【讨论】:
是的,点击我手机上的主页按钮,然后再次运行它也为我消除了这个错误。 有道理,但是当一个应用程序在用户面前打开然后Android杀死它来升级它时,它怎么能巧妙地关闭呢? 在那种情况下,Android 可能会调用 onDestroy() 方法,不是吗?希望如此。【参考方案13】:这是当 dalvik 重新安装 .apk 文件并尝试重用或回收同一包中先前打开的活动/视图时,底层框架引发的详细错误消息(如果您尚未关闭先前安装的应用程序) .它与您的应用无关,此外,您的应用不太可能因最终用户设备上的此详细错误消息而冻结或崩溃。
似乎这个 dalvik 详细错误日志只发生在 Android 4.0 系统上,我自己在 Android 3.2 和 2.3.3 运行环境中对其进行了测试,您无法复制以在它们都不显示此消息。之前在here 讨论过类似的问题,并且有人在Android Issues Tracker 中填写了错误报告。
我认为你暂时不用太在意这个冗长的错误日志,如果你在Logcat中查看更多这个红色错误之前和之后的日志,你可以看到完整的故事,发现之前打开的活动/视图(标记为死亡状态)被杀死,新安装的视图最终被弹出。
【讨论】:
嗨,不,我的应用程序不会因为该异常而崩溃或冻结,即使在抛出异常后它也能正常工作。我只是在 logcat 中看到了异常并且没有意识到它,因此想问同样的问题。感谢您提供的信息,非常有用。 我在生产应用程序的开发者控制台中得到了这个。它似乎主要发生在 4.2 中,但我也看到过其他版本(4.1、4.4)。 @Dustin,你解决了吗?因为这个例外每周最多报告 34 次!还有很多用户留言中的抱怨! 我仍然在 Android 5.1.1 本地获取它。 它甚至出现在 5.1.1 上。发生了什么事?以上是关于RuntimeException:无法实例化应用程序的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.ClassNotFoundException
Android RuntimeException:无法实例化服务
Android:java.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.NullPointerException
java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient