【发布时间】:2014-07-22 08:08:24
【问题描述】:
我目前正在制作一个使用我制作的库(我们称之为 parentLib)的应用程序。这个库还使用了我制作的另一个库(我们称之为 childLib)。所以顶级应用程序包含一个 .jar 文件(parentLib),并且在该 .jar 文件中是另一个 .jar 文件(childLib)。
但问题是,当我从顶级应用程序中使用子库 (childLib) 的某个方面时,我收到一条 NoClassDefFoundError 消息,导致应用程序崩溃。
奇怪的是,如果我将子库 (childLib) 直接添加到库 (parentLib) 旁边的应用程序的 libs 文件夹中,那么即使它实际上并没有使用这些库文件,也可以正常工作。似乎它只需要将子库(childLib)添加到库(parentLib)的构建路径中,以便应用知道在哪里寻找它,但我真的不确定?
子库 (childLib) 在直接从初始应用程序中使用时可以完美运行,但我需要能够将子库 (childLib) 作为包含它的单个文件 (parentLib.jar) 的一部分进行分发。
非常感谢任何帮助,在此先感谢!
【问题讨论】:
-
您的项目库的 Java 构建路径是否导出 Android 依赖项?在 Eclipse 中,您可以在该项目的属性下,在“Java Build Path”下,在“Order and Export”选项卡下进行检查。
-
是的,它正在导出 Private Dependencies 和 Android Dependencies,以及它自己的 /src 和 /gen 目录(我已经尝试按照类似问题的另一个答案将它们以相反的顺序排列。
-
有问题的jar是否出现在Android私有库列表中?在 Eclipse 中,您可以在该项目的属性下,在“Java Build Path”下,在“Libraries”选项卡下进行检查;展开“Android Private Libraries”条目以查看所有 jar。
-
以及后续问题:jar是否也出现在应用项目的私有库中?
-
parentLib 的 .jar 在其私有库中包含 childLib.jar。该应用程序在其私有库中包含 parentLib.jar,但不包含 childLib。
标签: java android jar libraries noclassdeffounderror