Java Manifest文件的类路径以及它如何确定相对dirs

MANIFEST.MF文件中的类路径如何确定相对位置?

1)假设我在lib/somejar.jar有一个带有jar的JAR,而且清单文件位于META-INF/MANIFEST.MF 。 我如何设置类路径….? 它是Class-path: lib/somejar.jar还是../lib/somejar.jar

2)让我们说somejar.jar里面还有其他主jar依赖的jar子。 当然somejar.jar也有自己的MANIFEST.MF文件,其中包含正确设置的类路径字段。 现在让我们说原始主jar文件在运行时需要访问其中一个JAR文件,只要somejar.jar在main.jar的类路径上,它能够这样做吗? 或者相关目录搞砸了,因为主jar运行’somejar.jar’不再是root了吗?

次要更新:这将全部在应用程序服务器上的Web环境中运行。

当它做“普通香草”时,你不能在JAR中有一个JAR。 您需要将其放在相对于主JAR的已知路径中, 或者在主JAR中提取JAR的内容。

但是从Eclipse 3.5开始,你可以通过内置技巧实现这一目标。 选择“ 导出”>“可运行的JAR文件”时,请选中“第二个库处理”选项。

替代文字

当选择Package required库到生成的JAR中时 ,Eclipse将添加一个特殊的类加载器,它将在执行主类之前为您透明地加载这些JAR。 它是在JarRsrcLoader帮助下JarRsrcLoader