MANIFEST.MF文件中的类路径如何确定相对位置?
1)
假设我在lib/somejar.jar
内有一个带有jar的JAR,并且清单文件位于META-INF/MANIFEST.MF
内。我如何设置类路径....?会是Class-path: lib/somejar.jar
还是../lib/somejar.jar
?
2) 让我们说somejar.jar里面还有其他主罐依赖的罐子。当然somejar.jar也有自己的MANIFEST.MF文件,并且具有正确设置的类路径字段。现在让我们说原始的主jar文件在运行时需要访问其中一个JAR文件,只要somejar.jar在main.jar的类路径上,它能够这样做吗?或者,由于主jar运行'somejar.jar'不再是根目录,相关目录是否搞乱了?
次要更新:这将全部在Web环境中,在应用程序服务器上运行。
答案 0 :(得分:1)
当做“普通香草”时,你不能在JAR里面有一个JAR。您需要将其放在相对于主JAR的已知路径中,或在主JAR中提取JAR的内容。
但是从Eclipse 3.5开始,你可以使用内置技巧。选择导出>时,请检查第二个库处理选项。可运行的JAR文件。
当选择将所需的包打包到生成的JAR 中时,Eclipse将添加一个特殊的类加载器,它将在执行主类之前为您透明地加载这些JAR。它是在JarRsrcLoader
的帮助下完成的。