0

通过解释以下令人讨厌的事情,你真的会让我很开心。

L 是图书馆。A 是一个使用 L 的应用程序,CA 是一个类,在 A 中声明,扩展了库 L 中的一个类 CL。

直到最近,我都可以将 L.jar 放在 A 项目的 lib 文件夹中。但是我购买了一个新硬盘,重置了 Eclipse、ADT 插件和 SDK,然后将我的项目转移到了新位置。这是它开始的时候。

如果我在 A 中放置对项目 L 的引用(通过 Project/Properties/Android/Library),一切仍然正常。但是对于 jar 文件,它会为 CA 类提供“未找到类定义”错误,即使它与调用方法属于同一类!

为了避免一些怀疑的言论:

  1. L 里面没有资源。
  2. 编译器版本为 1.6
  3. 我清理了这两个项目数百万次。
  4. 两个项目都使用相同的 API 版本编译。
  5. 没有使用混淆,我检查了 L.jar 中确实存在 CL 类。
  6. 尝试将 L.jar 放在构建路径中,作为最顶层,然后作为最底层 - 没有帮助。

感谢您的预期帮助。

4

1 回答 1

0

我很傻:在 BuildPath 配置的“Order and Export”面板中,我勾选了 Android Dependencies,但未勾选 Android Provite Libraries。

我发现通过 Android 属性链接的库转到 Android 依赖项,而 lib 文件夹中的库被视为 Android Private。这就解释了为什么第一个被包括在内,而第二个没有。

最烦的是,Eclipse 没有报错,build 好像没问题,只是在执行阶段才出现错误。作为一个 C 程序员,我不太习惯 :)

于 2013-05-24T23:09:10.190 回答