【问题标题】:Android java.lang.RuntimeException: Unable to instantiate activity ComponentInfoAndroid java.lang.RuntimeException:无法实例化活动组件信息
【发布时间】:2011-09-20 13:09:32
【问题描述】:

好吧,伙计们,这对我来说根本没有意义,我不明白为什么我的应用程序会出现这个错误。我已经在 android 清单 xml 中注册了活动类..

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobile.batteryhelper/com.mobile.batteryhelper.Battery}:
java.lang.ClassNotFoundException: Caused by: java.lang.ClassNotFoundException: com.mobile.batteryhelper.Battery in loader dalvik.system.PathClassLoader[/mnt/asec/com.mobile.batteryhelper-1/pkg.apk]

这里是 androidmanifest.xml。是的,.Battery 类也扩展了 Activity。

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Battery"
              android:label="@string/app_name"
               android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

【问题讨论】:

  • 意图过滤器>
  • user766380 如果某个答案解决了您的问题,请将其标记为已接受。
  • 对我来说,解决方案是这样的:stackoverflow.com/a/21290422/1612469

标签: android


【解决方案1】:

您是否尝试过清理工作区。转到项目->清理并选择您的项目。由于某种原因,eclipse 不会自动构建我的清单。

【讨论】:

  • 谢谢,我猜只是进入项目>清洁成功了! Eclipse 有时不自动构建清单是否有原因?
  • 我不知道。我猜只是它的怪癖之一。我将来可能会提交错误报告。
【解决方案2】:

您已将第 3 方库放入库文件夹并引用它们。转到属性/Java 构建路径/库/添加外部 JAR。

在 Properties/Java Build Path/Order and Export 中检查 Jar 文件

【讨论】:

    【解决方案3】:

    您是否尝试在调用 OnCreate 之前初始化类中的任何内容?
    如果你初始化静态变量(例如),它可能会给你这个(令人发指的钝)错误。

    【讨论】:

      【解决方案4】:

      实际上,我在这里找到了对同一问题的答案: java.lang.ClassNotFoundException on working app

      您不提供应用程序标签的名称,只提供活动。因此,如果您的问题与我的相同,您应该能够删除以下内容并且一切正常:

      android:name=".Battery"

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。在我找到出路之前,这是一个非常令人困惑的错误。转到 Properties>Java Build Path>Order and Export 并将您的 android-support-v4.jar 移动到顶部。它对我来说很好。试试看。

        【讨论】:

          【解决方案6】:

          您的清单包不是 com.mobile.batteryhelper,或者您的代码中没有 com.mobile.batteryhelper.Battery 类。可能您没有该类的公共构造函数,或者该类未声明为公共的(尽管我认为在这种情况下您会收到稍微不同的错误消息)。

          确保您没有使用 ProGuard 来剥离您的代码。确保该类是公共的,在正确的包中(与您的清单包相同),并且没有构造函数。如果里面有有用的东西,查看整个错误堆栈爬网也会很有用。

          【讨论】:

            【解决方案7】:

            右键单击您的电池类 > BuildPath > 排除 然后 右键单击您的电池类 > BuildPath > 再次包含您的类

            【讨论】:

              【解决方案8】:

              我遇到了这个问题并通过将放在“lib”文件夹中的所有 .jar 文件(外部库文件)移动到“libs”文件夹来解决它。不知何故,eclipse只知道放在libs文件夹中的.jar文件

              【讨论】:

                【解决方案9】:

                我遇到了同样的问题,我通过更新 ADT 插件解决了。

                【讨论】:

                  【解决方案10】:

                  仔细查看崩溃日志:

                  loader dalvik.system.PathClassLoader[/mnt/asec/com.mobile.batteryhelper-1/pkg.apk
                  

                  这里mnt表示外接SD卡。

                  通常,当android:installLocation="auto" 设置为 AndroidManifest.xml,如果设备没有足够的手机内存,那么 应用程序将存储在 SD 卡上。取出 SD 卡后 设备,应用找不到APK位置,然后应用崩溃。

                  产生崩溃的步骤:

                  问题可以在 HTC sense 2.3.4 版本中复制。

                  • 通过转到将应用程序移至 SD 卡 设置-->管理应用->点击应用-->移动到SD卡
                  • 从设备中取出 SD 卡并打开应用

                  如果您尝试使用三星设备,它不会崩溃,但如果您移除 SD 卡,它不会显示应用程序。此行为仅适用于少数设备。

                  【讨论】:

                    【解决方案11】:

                    您可以从手机或模拟器中删除该应用

                    【讨论】:

                      【解决方案12】:

                      对我有用的是删除“build”文件夹中最里面的文件,即生成、中间体、输出和 tmp 中的文件。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-04-29
                        • 2013-10-30
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-05-06
                        • 1970-01-01
                        相关资源
                        最近更新 更多