【问题标题】:Unable to Instantiate thread ComponentInfo - Another Thread无法实例化线程 ComponentInfo - 另一个线程
【发布时间】:2013-06-26 23:58:31
【问题描述】:

我遇到了有关 Android 应用的问题。这是错误消息:

06-29 16:07:28.263: E/AndroidRuntime(196): Uncaught handler: thread main exiting due to uncaught exception
06-29 16:07:28.463: E/AndroidRuntime(196): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.androidcalc/com.calc.AndroidCalc}: java.lang.ClassNotFoundException: com.calc.AndroidCalc in loader dalvik.system.PathClassLoader@44c067c8
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.os.Looper.loop(Looper.java:123)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread.main(ActivityThread.java:4363)
06-29 16:07:28.463: E/AndroidRuntime(196):  at java.lang.reflect.Method.invokeNative(Native Method)
06-29 16:07:28.463: E/AndroidRuntime(196):  at java.lang.reflect.Method.invoke(Method.java:521)
06-29 16:07:28.463: E/AndroidRuntime(196):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-29 16:07:28.463: E/AndroidRuntime(196):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-29 16:07:28.463: E/AndroidRuntime(196):  at dalvik.system.NativeStart.main(Native Method)
06-29 16:07:28.463: E/AndroidRuntime(196): Caused by: java.lang.ClassNotFoundException: com.calc.AndroidCalc in loader dalvik.system.PathClassLoader@44c067c8
06-29 16:07:28.463: E/AndroidRuntime(196):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
06-29 16:07:28.463: E/AndroidRuntime(196):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
06-29 16:07:28.463: E/AndroidRuntime(196):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
06-29 16:07:28.463: E/AndroidRuntime(196):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
06-29 16:07:28.463: E/AndroidRuntime(196):  ... 11 more

我检查了谷歌以获得一些帮助,并在 SO 上找到了一些关于此的其他线程,但这些似乎都不符合我的情况。事情是这样的:

我有一个大约一年前开始编写的应用程序。有一段时间,尽管它不完整,我还是搁置了它,因为我还有其他事情要做。在闲置了大约 6 个月后,我今天才回到它尝试为平板电脑实现 UI(目前平板电脑 UI 是从超级丑陋的小屏幕 UI 借用的)。这是我所做的:

1) 我创建了一个 layout-large 文件夹来存储新的 UI 元素,并在较小布局文件夹中的 UI 元素中按 CTRL-C CTRL-V'd 作为使用的基础。

2) 我意识到我的平板电脑实际上被归类为特大号,所以我重复了第 1 步,除了 layout-xlarge。

3) 我在 layout-xlarge 中修改了一些 UI 修饰(仅文本大小和元素大小,没有触及任何代码)。

4) 我注意到我没有安装所需的 SDK 来模拟我的平板电脑(我只有 4.0.3 并且需要 4.1.2),所以我通过 SDK 管理器更新了我的 SDK。

5) 更新 SDK 后,我创建了 Tablet VM。

6) 有人告诉我 Eclipse 需要更新很多东西,所以我这样做了。

7) 更新 Eclipse 后,我被告知我需要返回 SDK 管理器并更新一些东西(特别是称为 Build-tools 的东西),所以我这样做了。

8) 我在我的平板电脑虚拟机上运行程序,得到了上述错误。

9)我在我的手机虚拟机上运行程序(在以前的版本下工作),得到了上述错误。

不知何故,在执行上述步骤时,我没有触及任何一行代码或添加任何新的 Activity 元素(额外的 UI 除外),我设法将我的应用程序搞砸到无法运行的地步。我已经尝试了以下方法:

1) 我检查了我的 Android 清单。其中唯一的东西是应该存在的单个唯一 Activity 应用程序。

2) 我已经完成了项目清理。

3) 我读过的前一篇文章建议我删除“bin”和“gen”目录并重建它们。我做到了。

这三件事都没有奏效。有没有人有任何进一步的建议?谢谢。

【问题讨论】:

    标签: android eclipse android-layout runtime-error


    【解决方案1】:

    您的包裹似乎有些问题。我看到应用程序包被声明为com.androidcalc,但您要实例化的类是com.calc.AndroidCalc。所以我认为实际的类名和声明的名称不匹配。这意味着您应该:

    • 查看项目中的包名,改成com.androidcalccom.calc
    • 检查 AndroidManifest.xml 并在应用程序和活动声明中将包设置为完全相同的内容。

    【讨论】:

    • 谢谢。试过了。现在这个包是 com.calc.androidcalc(它在项目中到处都是这样写的,据我所知),Activity 是 com.calc.AndroidCalc。它仍然没有运行,据我所知,错误消息与更改 s/com.androidcalc/com.calc.androidcalc/g 的模数相同。
    • @Ertai87 没有运行,因为包还是不一样。您将包声明为com.calc.androidcalc,并且活动在包中com.calc
    • 很抱歉。不太习惯这个包的东西;这仍然是我的第一个应用程序。无论如何,我解决了这个问题,但仍然遇到同样的错误(这次是 com.calc/com.calc.AndroidCalc)。为了以防万一,还进行了项目清理,但没有运气。还有什么我应该检查的吗?只是为了好玩,我还尝试将目标 SDK 版本更改为最新版本(从 7 版本中的 17 版本)以防万一,但这也无济于事。我的 AVD 在 SDK 7 和 SDK 16 上,因为这是我拥有的 2 个 IRL 设备。
    • @Ertai87 活动顶部有声明package com.calc吗?还要检查其他问题,例如this one
    • 好吧,根据那个线程,我删除了除 Android 2.1 库之外的所有库,然后重新添加了 v4.support 库(以使用 SDK 7 中的片段)和名为 JRE 系统库的东西(我不太明白,但它看起来很有用),现在它似乎在 SDK7(我的手机模拟器)下运行。不过,它仍然无法在我的目标 SDK 16 上运行,尽管现在错误消息有所不同。知道为什么项目可能在 SDK 7 上运行良好但在 SDK16 上崩溃吗?显然它在大喊 NullPointerException,但它在 SDK7 上运行良好,这让我感到奇怪。
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多