为JAR本身内的类指定类路径

时间:2009-01-26 16:50:45

标签: java jar classpath

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

5 个答案:

答案 0 :(得分:3)

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

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

Class-Path:lib1.jar,lib / lib2.jar

然后JVM将在与app.jar相同的目录中找到lib1.jar,并在lib包含lib2.jar的子目录中找到。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

作为标准存在的功能是通过在清单中指定其他jar文件来将其添加到类路径中。

答案 4 :(得分:-1)

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