如果我有一个类org.foobar.MyClass并想将它放在JAR文件中,我是否必须将它放在JAR的/ org / foobar /目录中,或者我可以将它放在/ bin / org /中foobar /并以某种方式指定/ bin /作为JAR本身内部的类路径?
答案 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文件或进行任何其他类型的特殊设置。