【问题标题】:Jar referenced from android library project not referenced by App. NoClassDefFoundError从 android 库项目引用的 Jar 未被 App 引用。 NoClassDefFoundError
【发布时间】:2024-01-18 20:51:01
【问题描述】:

我已经搜索过 SO 并尝试了我遇到的所有解决方案,但似乎没有任何效果。我尝试过的解决方案是hereherehereherehere,但似乎没有任何效果。

如其中一些问题中所述,我有一个包含在 android 应用程序 (AA) 中的 android 库 (AL) 中的 java 库(比如说 J)。我已经将该库添加到两者的库中(也尝试将其添加到仅 AA 并包含在 AL 中,反之亦然,仅在 AL 中并期望 android 依赖项来处理它)但是那个或其他任何东西都没有工作。

我正在使用最新的工具(版本 20.0.3)。 android库和app的build android版本是2.2,min SDK是5。

我可以在应用程序的 android 依赖项中看到 java 库,但我得到了 NoClassDefFoundException 和运行时间。

我怎样才能让它工作?

android 库必须引用一个 jar,因为它包含一些我需要隐藏的加密逻辑。该库是为分发而创建的,该应用程序只是用于测试该库的非常简单的东西。

【问题讨论】:

  • 您将 Android 库 (AL) 放在您的 Android 应用 (AA) 中的什么位置?例如,它位于项目文件系统的哪个位置?
  • 另外,NoClassDefFound 错误是否仅适用于您的 java 库 J?可以在 AL 中使用不依赖 J 的其他功能吗?
  • 是的。仅适用于java库J中的函数/类。它们都是同一根目录下的不同文件夹。所有人还共享同一个工作区。通过反复试验找到了解决方案。它现在可以工作了。

标签: java android jar adt android-library


【解决方案1】:

有 2 个不同但相关的问题导致了此问题。

  1. Java 库 J 是按照合规级别 1.7(我的系统的默认值)编译的。这需要达到 1.5,即 Android 的合规级别。 (合规级别将来可能会发生变化)。
  2. J 库也在使用 J2SE 库进行编译。我不得不用与我的应用程序相同 api 级别的 anroid.jar 替换它。

然后事情也没有工作,由于某种原因,在我删除项目并在新目录中重新创建后它开始工作。(IMP:先备份代码)。

【讨论】:

    最近更新 更多