无法实例化活动ComponentInfo

时间:2011-09-18 07:23:14

标签: android eclipse android-emulator adt android-version

我正在为Froyo开发一个应用程序作为最低版本,而Gingerbread作为目标版本。所以,清单显示:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10"/>

我有一个模拟器和一个带姜饼的Nexus One,应用程序正确部署和安装。 但是当它启动时,它会崩溃,并且日志中抛出的错误是:

09-18 06:35:11.240: ERROR/AndroidRuntime(382): FATAL EXCEPTION: main
09-18 06:35:11.240: ERROR/AndroidRuntime(382): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.package/com.my.package.Dashboard}: java.lang.ClassNotFoundException: com.my.package.Dashboard in loader dalvik.system.PathClassLoader[/data/app/com.my.package-2.apk]
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.os.Looper.loop(Looper.java:130)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.reflect.Method.invokeNative(Native Method)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.reflect.Method.invoke(Method.java:507)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at dalvik.system.NativeStart.main(Native Method)
09-18 06:35:11.240: ERROR/AndroidRuntime(382): Caused by: java.lang.ClassNotFoundException: com.my.package.Dashboard in loader dalvik.system.PathClassLoader[/data/app/com.my.package-2.apk]
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     ... 11 more

是的,活动“Dashboard”在Manifest中声明:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.my.package"
      android:versionCode="1"
      android:versionName="1.0"
      android:installLocation="auto">

      <activity android:name=".Dashboard"
              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 :(得分:8)

我在Eclipse 4.2下开发这个问题。我的主要活动是由AndroidManifest.xml文件引用的,包含正确的包和名称,但仍然无法加载。经过一些调试和评论后,我发现我的主要活动正在实现的界面是问题的根源。此接口在单独的项目中定义,但我未能在 Java构建路径中引用该项目。所以,当我构建东西时,它们会正确构建,但是当我启动时我会立即遇到一个强制关闭的力量,并且出现与此问题相同的错误。

为了解决这个问题,我右键点击Android项目,选择 Java Build Path ,将我的'公共代码'项目添加到项目标签,然后检查订单和导出标签上该同一项目的框。之后,一切正常。

答案 1 :(得分:4)

我通过恢复项目属性轻松解决了这个问题:

  • 右键单击您的项目
  • Android工具
  • 修复项目属性

然后你的依赖关系将恢复为新的,一切都会好的!

答案 2 :(得分:3)

我的解决方案是在Project - &gt;属性 - &gt; Java构建路径 - &gt;订单和导出,您应该勾选您使用的条目。但是,如果你勾选到Android.jar,我也会体验到“转换为Dalvik格式失败,错误1”

同时删除除Android.x.x以外的所有库,然后按项目清除项目 - &gt;清理然后添加您的库(不要忘记按顺序打勾并导出)可以解决“转换为Dalvik格式失败,错误1”的事情。

还需要检查的另一个地方是属性 - &gt; Java编译器 - &gt; JDK合规性。

答案 3 :(得分:2)

对我来说,就像在电话间隙升级期间(从1.4到1.8.1)。 我必须更新根项目上的 .project 文件。 我创建了一个新项目,并将新文件与前者进行比较。

答案 4 :(得分:2)

您可以通过更正清单文件中活动的类名来修复此错误

答案 5 :(得分:2)

我通过检查Java Build路径中Order and Export下的Android Private Libraries和Android依赖项来解决我的问题

答案 6 :(得分:2)

对于记录,可能导致此问题的另一个简单原因(可能在启动项目时被忽略)是您要启动的活动可能没有扩展活动或者是空类等。

答案 7 :(得分:0)

事实证明,项目文件缺少正确制作apk所需的一些构建器。这就是为什么它无法找到Dashboard类。

解决方案是创建一个空的Android项目,并将自动生成的.project和.properties文件与已损坏项目中的文件进行比较。

答案 8 :(得分:0)

我遇到了同样的问题,但我已经正确定义了所有内容。我从我的SVN中获取了同一项目的另一个副本,我在第二个项目中遇到了这个错误。 重启Eclipse:这将刷新eclipse的内存。它对我有用

答案 9 :(得分:0)

最后我通过使两个android-support-v4.jar相同来解决它..只需复制任何与项目相关的项目中的android-support-v4.jar并替换它们。

将此添加到您的Android清单

   <uses-library android:name="com.google.android.maps" />

答案 10 :(得分:0)

我发现this post有类似的问题和许多不同的可能解决方案。但是,就我而言,问题出在我的Android项目设置中。不知何故,我的项目的Java构建路径没有链接到源文件夹。这就是为什么我的清单文件无法找到活动类的原因。我通过链接src文件夹解决了这个问题。为此,请右键单击项目&#34;属性&#34; - &gt;&#34; Java Build Path&#34;。然后选择标签&#34;来源&#34;。检查您的src文件夹是否列在此处。如果没有,请单击&#34;添加文件夹...&#34;然后导航到项目的src文件夹。

答案 11 :(得分:0)

今天我遇到了同样的问题,这是主类命名的问题。它是 IdleActivity ,只要我通过设置 IdleDnaActivity 更改它,应用程序就会成功启动。

相关问题