0

我有一个依赖于库项目 (B) 的 Android 应用程序 (A) 项目。库项目包含代码以及第三方 jar 文件和从项目 C 和 D 导出的一些其他 jar。在 Eclipse 中,我将项目 B 指定为库项目。

但是,当我连接我的设备并运行项目 A(运行方式 -> Android 应用程序)时,它在设备上崩溃,当我检查 LogCat 输出时,jar 文件中存在的类之一出现 NoClassDefFoundError 异常项目 C。

当我在项目 B 的 bin 文件夹中解压缩 B.jar 文件时,它除了 META-INF/ 文件夹和一个空的 MANIFEST.MF 文件之外不包含任何其他内容。所以这表明某处似乎出了问题,但我无法弄清楚。

有人可以帮我解决这个问题吗?

4

1 回答 1

1

您是否在使用最新的 ADT 插件和 SDK 版本?那是rev 22.x。如果是这样,则依赖项管理发生了重要变化。

可能的解决方案

由于某种原因,Order and Export选项卡的内容已经完全改变,您现在必须Android Private Libraries从您的库项目中导出。请看下面的截图:

在此处输入图像描述

更多细节

此更改的棘手部分是您的项目仍然在 Eclipse 中正确编译,因此您不知道任何问题。直到您在模拟器或设备上部署应用程序并且您可以ClassDefNotFoundException随时调用库项目。

未确认,但我认为这与最近对 maven 支持的更改有关,也与 android studio 预览有关

过去类似的变化

这让我想起了 rev 17 的更新中的类似变化,其中lib文件夹突然更改为libs并且原始文件夹中的所有内容lib都没有打包,因此您不会在 eclipse 中看到任何问题。仅在设备上安装一次。

此链接上提供了有关“问题”的更多信息。如果您在 stackoverflow 上搜索“sdk 17”和“classdefnotfound”,您还会收到有关该更改的大量问题。

于 2013-05-29T18:58:04.200 回答