239

我有一个相当大的 Android App 项目,它引用了几个库项目。一切都很好,直到我将 eclipse ADT 插件升级到最新版本(v22)。当然,我也升级了 SDK。我在 Eclipse 中没有看到任何编译错误,但是当我在手机上运行项目时,我得到了 NoClassDefFoundError。

java.lang.NoClassDefFoundError: org.acra.ACRA
....

arca 库包含在一个引用的库项目中(在 libs 文件夹中),我可以在包资源管理器的“Android Private Libraries”中看到它,正如我所说,没有编译错误。该项目在其他没有升级 ADT 的计算机上运行良好。

我已经尝试了很多东西,包括但不限于:

  • 重新安装安卓SDK
  • 下载新的 ADT 包
  • 删除我所有的代码,然后从 git 重新获取
  • 将有问题的库复制到应用程序项目
  • 注释掉使用这个库的代码 - 我只是得到下一个库的相同错误

一切都没有成功,所以我在这里变得非常绝望。

如果有人能给我一个关于如何解决这个问题的提示,我会非常高兴。

4

7 回答 7

337

从他的 adt-dev 帖子中引用波士顿的街道:

升级时,新的“Android Private Libraries”的“Order and Export”并不总是被选中。android-support-v4.jar 现在位于“Android Private Libraries”部分。

要解决此问题,请转到“订购和导出”并选中“Android 私有库”。然后刷新/清理/重建。

在为库项目完成此“修复”后,您可能需要关闭并重新打开任何依赖项目,因为他们可能不会立即看到此“修复”。

试一试,如果幸运的话,它会解决你的问题。

在此处输入图像描述

于 2013-05-16T20:35:38.300 回答
10

仅仅检查 Android Private Libraries 是不够的,我还必须在 Android SDK Manager 中安装Android SDK Build-tools 。

于 2013-07-04T08:37:05.637 回答
4

我也有同样的问题,我的adt22.0.1。上面的解决方案都没有奏效。此外,将外部库项目添加到工作项目时。我总是检查gen工作项目的文件夹,如果R外部库项目存在(连同包名),则只导出外部库项目。在我的gen文件夹中没有packagename显示外部库。

所以我检查了project.properties文件,没有任何外部库链接android.library.reference.1=存在。所以我在那里手动添加了外部库引用,即使我已经从project->properties->Java Build Path->Projects->Add. 因此,手动编辑project.properties为我完成了所有工作。

在此处输入图像描述

于 2013-07-02T08:36:52.767 回答
4

我遇到了类似的问题,花了大约 3 个小时,但这里提出的决定都没有帮助......最后我找到了问题的根源:我的项目文件和 project.properties 是只读的。当我在 GUI 中执行此操作时,Eclipse 只是默默地忽略了库依赖项中的任何更改!

于 2013-10-13T21:35:18.017 回答
3

我有同样的问题。这是因为eclipse项目。为了解决这个问题,我在 eclipse 中创建了一个新项目,将我现有的项目类和资源复制到其中,然后再次启动 eclipse 并添加了我的自定义包含。

于 2013-06-03T09:45:58.623 回答
2

我有类似的问题,我的答案与 CommonsWare 的略有不同。这是我的截图:

在此处输入图像描述

在我的构建中检查库后重新开始工作。

于 2013-06-13T22:07:42.070 回答
0

我也遇到了同样的问题

i)添加gson lib作为referecend库
ii)在java Build Path中检查它 http://i.stack.imgur.com/Gldhs.png

于 2013-07-16T08:59:06.637 回答