2

我正在eclipse中开发一个Android项目。我正在创建一个library projectmain project. Main project使用external jar文件。我想将此external jar文件添加到我的library project,只需将 jar 文件添加library projectmain project. 我已经在库项目中添加了该 jar 文件,但是当我编译库项目时,它的大小没有改变,并且外部 jar 文件没有嵌入到库项目中。

我的意思是我想将库和外部 jar 合并到一个库中,我的项目可以链接到该库。

我怎样才能做到这一点?

谢谢,

4

3 回答 3

3

因此,您想将库和外部 jar 合并到您的项目可以链接到的一个库中吗?这是不可能的。您不能仅仅组合/链接两个二进制文件 (JAR) 并期望它们作为一个单独的库工作。您的库是动态链接的,而不是静态链接的,并且每个库都加载到不同的地址空间中。如果你想让它们合二为一,你需要拥有这两个库的源码(你现有的库和外部jar)并将它们编译成一个(即静态链接)。

更新:

感谢 Sergiu 的洞察力,这是真的。上面的答案是基于库是 JRE 在运行时在某个内存位置加载的二进制文件,并且它是格式化的二进制文件,其中函数/变量加载在环境计算的位置 - 一般 CS 理论。

根据您的评论,我搜索了如何组合两个 JAR,您的方法似乎是正确的。

这是另一个 SO 答案:结合两个 JAR

查看第二个答案,它还澄清了 Manifest.mf 文件。

于 2013-01-06T09:27:28.543 回答
0

您可以使用两种方式将外部 jar 添加到项目中:

  1. 右键单击项目,转到Properties.
  2. Java Build Path选项卡中选择Library选项卡并单击Add External JARs..按钮以将外部 jar 文件添加到您的项目中。
  3. 点击OK

另一种方法是将jar文件复制到您的项目libs文件夹中,然后右键单击该jar文件并选择Build Path>Add to Build Path.

试试这个方法,希望对你有帮助。

于 2013-01-06T09:18:07.553 回答
0

这是一个常见问题,它被定义为您的库的范围。通常范围是“已提供”,这意味着该库应该包含在类路径中(对于 javac)而不是Jar文件中,但在这种情况下,您应该将库范围更改为“编译”,这样它也可以进入 Jar文件。

我不使用 Eclipse,所以我不知道要查看哪个菜单,但它是通用属性,(在 Apache Maven、IntelliJ 中,...)所以我很确定你可以在 Eclipse 上找到它的位置小搜索

长话短说,将您的库范围更改为“编译”

于 2013-07-27T14:22:09.803 回答