2011-09-18 66 views
3

我正在开发Froyo作为最低版本和姜饼作为目标版本的应用程序。因此,清单显示:无法实例化活动ComponentInfo

<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 

是的,活动“仪表板”,在清单中声明:

<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> 

     ... 

所以,可这有什么问题有关?这让我疯狂。

+0

这两行有意义com.my.package和/data/app/com.my.package-2.apk? – user370305

+0

我不知道你的意思。 – frapontillo

+0

只需检查您的ddms文件资源管理器在data/app/<包名称>中与您在类构建中使用的相同。 – user370305

回答

0

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

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

2

对我来说,就像在电话的升级过程中(从1.4到1.8.1)一样。 我不得不更新根项目上的.project文件。 我创建一个新项目并将新文件与前者进行比较。

8

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

为了解决这个问题,我右键点击了Android项目,选择Java构建路径,加入我的“公共代码”项目的项目选项卡,然后选中该复选框为同一个项目上订单并导出选项卡。之后,一切都奏效了。

+0

这对我不起作用... –

3

我的解决方案是在项目 - >属性 - > Java构建路径 - >订单和导出,你应该勾选你使用的条目。但我也经历如果你勾选Android.jar,它说“转换为Dalvik格式失败,错误1”

还删除除Android.xx之外的所有库,然后通过项目 - >清理和清理项目然后添加您的库(不要忘记按顺序打勾并导出)可能会解决“转换为Dalvik格式失败,错误1”的事情。

还有一个你需要检查的地方是Properties - > Java Compiler - > JDK Compliance。

+0

删除项目 - >属性 - > Java Build Path中的所有库 - > Android.X.X之外的库为我工作。 – Gene

2

您可以通过在清单文件

4

我已经解决了这个问题,纠正你的活动类的名称很容易恢复项目属性修正这个错误:

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

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

2

我通过检查订单和出口下,Android的私人图书馆和Android依赖于Java构建路径

0

我有同样的问题,但我拥有了一切正确定义解决我的问题。我从SVN中拿了同一个项目的另一个副本,在第二个项目中出现这个错误。 重新启动Eclipse:这将刷新eclipse的内存。它对我很有用

2

为了记录,另一个可能会导致这种情况的简单原因,在开始项目时可能会被忽略,因为您希望启动的活动可能没有扩展的Activity或者是空的类等等。

+0

谢谢你提到这个。已经自己想清楚了,但是......花了时间。讨论很好。 – akauppi

0

最后,我解决了两个android-support-v4.jar一样的问题。只需复制任何与您的项目相关的任何项目的android-support-v4.jar并将其替换即可。

使用添加以下内容到Android清单

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

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

0

今天我有同样的问题,这是与主类命名问题。这是空闲活动,只要我通过设置IdleDnaActivity改变它,应用程序启动成功。

相关问题