4

如果我有一个类 org.foobar.MyClass 并且想把它放在一个 JAR 文件中,我是否必须把它放在 JAR 的 /org/foobar/ 目录中,或者我可以把它放在 /bin/org/foobar/ 和以某种方式将 /bin/ 指定为 JAR 本身内的类路径?

4

5 回答 5

3

您可以在清单中包含 Class-Path 属性,列出您的应用所依赖的 jar 文件。路径将被视为相对于可执行 JAR 的位置。

例如,如果您的 app.jar 在 MANIFEST.MF 中包含此内容:

类路径:lib1.jar,lib/lib2.jar

然后 JVM 将期望在与 app.jar 相同的目录中找到 lib1.jar 以及包含 lib2.jar 的名为 lib 的子目录。

于 2009-01-26T17:55:55.707 回答
1

每个人都这样做的通常方法——到目前为止,我从未见过 JAR 做不同的事情——是将类 org.foobar.MyClass 放在 JAR 的 /org/foobar/ 目录下的 JAR 文件中。我无法想象做一些不同的事情的充分理由,因为它会阻碍任何不做不寻常事情的人正常使用这个 JAR。

于 2009-01-26T17:44:44.997 回答
0

我相信您可以通过使用 MANIFEST 文件来完成此操作。如果我没记错的话,您可以指定 jar 中特定文件的位置。

于 2009-01-26T16:57:11.800 回答
0

jar 文件中的名称必须与类名匹配。当然,除非您编写自定义类加载器来做奇怪的事情。

您可以使用 jar URL 在 jar 文件中指定“目录”。但是,我认为无法URLClassLoader正确处理此问题(未尝试过)。

作为标准存在的一个特性是通过在清单中指定它们来将其他 jar 文件添加到类路径中。

于 2009-01-26T17:24:57.720 回答
-1

你为什么要做后者?根据包名将它放在正确的目录中会更容易,这样可以避免编辑 MANIFEST 文件或进行任何其他类型的特殊设置。

于 2009-01-26T16:58:38.800 回答