我只是想了解外部库在 java 中的工作方式。我到处看事情都不清楚。
通常,我理解使用外部库涉及将类路径设置为所需的类、JAR 等。
我的问题是(如果我要将我的项目构建到 JAR 中)如果它可以在另一台计算机上使用,它如何能够访问该库?外部 JAR 是否会包含在 MY JAR 文件中?否则,它如何能够访问外部 JAR?
示例是如何与 bukkit 插件一起使用,插件如何知道在哪里引用 bukkit.jar 文件?
每个 jar 都有一个清单文件。在那里你可以参考罐子外的其他罐子。这些将包含在您的类路径中。 你可以在这里看到如何做到这一点。例如,您可以将其放入清单文件中:
Class-Path: jar1-name jar2-name directory-name/jar3-name
正如您在此处看到的,它使用相对路径。如果它们是绝对路径,它们会说类似C:\...\jar1-name
. 使用相对路径意味着,只要 jar相对于主 jar 保持在同一个位置,这段代码就会正确运行。
或者,您可以提供一个脚本来运行java
命令并在类路径中包含您需要的所有 jar。
对于另一种选择,您可以使用称为uberjar的东西,它将所有这些东西放在一个 jar 中,然后您可以分发它。
对于另一种选择,您可以使用jar 类加载器从嵌入式 jar 加载类。
为了教育起见,您可能想在此处查看我的答案,该答案描述了许多分发 Java 应用程序的方法。
.Jar
文件只不过是额外的代码行或完整的程序。如果要包含它们,则必须将它们添加到构建路径和/或项目中。添加后,您可以引用它们并使用它们。
如果您要创建.Jar
文件或库,您使用的所有内容都将包括在内。添加库时,它会添加到项目中,因此,当您发布项目时,它会包含在您的程序中。