根据第一个项目将一个项目的 jar 库包含在另一个项目中

Include one project's jar libraries in another project depending on the first

我正在 Eclipse 中处理两个项目。

项目 A 依赖于项目附带的一些 jar 文件,这些 jar 文件已添加到项目 A 的“Java 构建路径”中的“库”选项卡 属性 在 Eclipse 中。

项目 B 依赖于项目 A,并在项目 A 的构建路径中的某些 jar 文件中直接使用某些 classes。

我假设将项目 A 添加到项目 B 的 Java 构建 Class 也会添加项目 A 的构建路径中已有的 jar,但事实并非如此。

我是否必须手动将这些 jar 添加到项目 B 的构建中 class,还是我忽略了一个设置?如果是这样,为什么这是一个有用的标准行为?

您必须手动将 jar 添加到项目 B 的 class路径。

添加项目依赖项意味着项目 A 依赖于项目 B 的编译输出。项目 B 的输出(其编译的 .class 文件)不包含它所依赖的 .jar 文件。

这是为什么?我不知道 eclipse 作者的基本原理,但我的猜测是他们想让 class 路径尽可能简单和冗长。如果您在 class 路径上有同一个库的多个版本,事情就会变得混乱。

在原版 java 中,您可以为 class 路径提供目录名称。当加载一个 class 时,JVM 将按顺序搜索这些目录。 Eclipse 鼓励采用更严格的方法,其中手动指定每个 jar。请注意,您可以一次添加多个 jar,因此将项目 B 的所有 jar 添加到项目 A 的 class 路径是微不足道的。