Android java.lang.RuntimeException:无法实例化活动ComponentInfo

时间:2011-06-22 16:11:12

标签: android

好的家伙这对我来说根本没有意义,我不明白为什么我在我的应用程序中收到此错误。我在android manifrest 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>

12 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:6)

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

检查“属性/ Java构建路径/订单和导出”中的Jar文件

答案 2 :(得分:2)

在调用OnCreate之前,您是否曾尝试初始化课程中的任何内容? 如果你初始化静态变量(例如)它可以给你这个(令人愤怒的钝)错误。

答案 3 :(得分:2)

其实我在这里找到了同样问题的答案: java.lang.ClassNotFoundException on working app

您没有为Application标记提供名称,只提供Activity。因此,如果您的问题与我的问题相同,那么您应该能够删除以下内容并且一切正常:

  

机器人:名称= “电池”

答案 4 :(得分:2)

我遇到了同样的问题。在我找到出路之前,这是一个相当混乱的错误。转到属性&gt; Java构建路径&gt;订单和导出,并将您的android-support-v4.jar移动到顶部。它对我来说很好。尝试一下。

答案 5 :(得分:1)

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

确保您没有使用ProGuard剥离代码。确保该类是公共的,在正确的包中(与清单包相同),并且没有构造函数。另外,如果内部有一些有用的东西,看看整个错误堆栈爬行会很有用。

答案 6 :(得分:1)

右键点击您的电池类&gt; BuildPath&gt;排除 然后 右键单击您的Battery类&gt; BuildPath&gt;再次加入你的课程

答案 7 :(得分:1)

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

答案 8 :(得分:0)

仔细查看崩溃日志:

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

此处mnt表示外部SD卡。

  

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

产生崩溃的步骤:

能够在HTC轰动2.3.4版本中复制的问题。

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

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

您只需从手机或模拟器中移除该应用即可

答案 11 :(得分:0)

对我来说有用的是删除内部最内层的文件&#34; build&#34;文件夹,它是生成的文件,中间体,输出和tmp。

相关问题