AndroidAnnotations上的ClassNotFoundException在更新到ADT 22后生成了类

时间:2013-05-17 06:42:22

标签: android classnotfoundexception eclipse-adt android-annotations

该项目在更新到ADT22之前创造了奇迹。我已经失去了一天,因为不知道我必须下载构建工具,而且我担心因为这个原因,我将失去另一个。

当我尝试构建两天前工作的相同代码时,我得到了这个例外:

com.cidaut.blueparking fatal error : Unable to instantiate activity \
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
    java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk
java.lang.RuntimeException: Unable to instantiate activity \
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
    java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk

  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
  at android.app.ActivityThread.access$600(ActivityThread.java:141)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:5041)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk
  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
  ... 11 more

我实际上发现它试图在APK文件中找到类,但无论如何都很奇怪。这有什么解决方案吗?

顺便说一句,我的 classpath 包含AndroidAnnotations生成代码的源文件夹,所以这不是问题。

这是我的订单和导出窗口

Eclipse / Order and Export

AndroidAnnotations类生成错误日志

AndroidAnnotations class generation error log

编辑:现在它正在运作

我遵循的程序是:

  1. 清理并重建所有内容
  2. 检查每个项目(主项目和库)的订单和导出标签上的所有内容
  3. 再次清理并重建所有内容
  4. 现在有效。我不敢相信我因此而失去了近12个小时......

5 个答案:

答案 0 :(得分:16)

转到“配置构建路径”的“订购和导出”选项卡,然后单击所有必需库旁边的复选标记

答案 1 :(得分:10)

以下是解决方案:

  1. 在Eclipse中,右键单击Project name并选择Properties

  2. 选择订单和导出标签,然后确保已选中Android私有库

  3. 从项目中清除项目 - >清洁

  4. 这应该有效

答案 2 :(得分:4)

我有同样的问题,对我而言,这是由于项目“java build path”中的“允许源文件夹的输出文件夹”选项。 我取消选中它,再次检查它,问题就消失了。 无论出于何种原因,使用的路径与默认路径不同。也许这是由于m2e android。

答案 3 :(得分:3)

我遇到了类似的问题 - 事实证明,参与项目中包含的支持库存在JAR不匹配导致问题。确保每个项目都使用相同版本的支持库为我修复它。

答案 4 :(得分:1)

在这里弹出一个答案,以防将来有人遇到这个问题。我将ActionBarCompat添加到我的使用AndroidAnnotations的应用中并遇到了同样的问题。事实证明,特定应用程序正在使用的所有库都需要存在于父应用程序中。因此,即使ABC是Eclipse中的一个库项目并且编译了代码,我仍然需要在我的应用程序中包含ABC作为库。