【问题标题】:ClassNotFoundException on AndroidAnnotations generated classes since update to ADT 22自更新到 ADT 22 以来,AndroidAnnotations 上的 ClassNotFoundException 生成的类
【发布时间】:2013-05-17 06:42:22
【问题描述】:

这个项目在更新到 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 生成代码的源文件夹,所以这不是问题。

这是我的订购和导出窗口

AndroidAnnotations 类生成错误日志

编辑:现在它正在工作

我遵循的程序是这样的:

  1. 清理并重建一切
  2. 每个项目(主项目和库)的Order and Export选项卡上检查所有内容
  3. 再次清理并重建所有内容

现在可以了。我不敢相信我因此损失了将近 12 个小时......

【问题讨论】:

  • 检查类是否存在,同时检查构建器是否存在且顺序正确。
  • 这些类确实存在。建筑商?什么意思?
  • 不,抱歉,错误的轨道的建设者,我确定注释处理器已打开。
  • @santirivera92 这是什么“com.cidaut.blueparking.SplashScreen_”?我的意思是我认为你已经在你的项目中添加了库..我是对的吗?
  • @santirivera92 并确保您检查了 Android Private Libraries。您的所有 jar 文件都应该在您的 Android Private Libs 中。

标签: android classnotfoundexception eclipse-adt android-annotations


【解决方案1】:

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

【讨论】:

  • 好吧,你说对了一部分。问题不在我的项目的 Order and Export 选项卡中,而是在我的库的 Order and Export 选项卡中。现在我正在导出每个项目中的所有内容,并且它再次起作用。非常感谢!
【解决方案2】:

解决办法如下:

  1. 在 Eclipse 中,右键单击项目名称并选择属性

  2. 选择 Order and Export 选项卡,然后确保选中 Android Private Libraries

  3. 清理您的项目,从项目 -> 清理

这应该可以工作

【讨论】:

  • 这应该是所有需要的。
【解决方案3】:

我遇到了同样的问题,对我来说,这是由于项目“java 构建路径”中的“允许源文件夹的输出文件夹”选项造成的。 我取消选中它,然后再次检查它,问题就消失了。 无论出于何种原因,使用的路径都与默认路径不同。也许是由于m2e android。

【讨论】:

  • 哦,哇,我花了很多时间在这上面。我正在使用带有 ADT 22.6.3.v201404151837-1123206 的 android-maven-plugin 3.9.0-rc.2。我终于去了 Properties|Java Build Path|Source 并取消选中并重新选中“允许源文件夹的输出文件夹”(对于我的应用程序项目和我的库项目)并进行了干净的构建。这个错误消失了!奇怪的是,我回到了项目的属性,而这个选项现在未选中!但至少我的应用程序现在正在运行。
【解决方案4】:

我遇到过类似的问题 - 结果是引用项目中包含的支持库的 JAR 不匹配导致了问题。确保每个项目都使用相同版本的支持库为我修复了它。

【讨论】:

  • 你是对的,有时是因为 JAR 不匹配而发生的
  • 是的,由于某种原因,在低于 API 21 的设备上工作时,模块和项目中有重复的依赖项会导致此错误。太糟糕了,堆栈跟踪没有提供线索!
【解决方案5】:

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

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 2014-08-24
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    相关资源
    最近更新 更多