MANIFEST.MF 文件中的类路径如何确定相对位置?
1)
假设我有一个 JAR,其中包含 lib/somejar.jar
内的 jar,并且 list 文件位于 META-INF/MANIFEST.MF
内。我将如何设置类路径......?是类路径:lib/somejar.jar
还是../lib/somejar.jar
?
2) 假设 somejar.jar 内部还有主 jar 所依赖的其他 jar。当然,somejar.jar 也有自己的 MANIFEST.MF 文件,其中包含正确设置的 Class-path 字段。现在假设原始主 jar 文件在运行时需要访问这些 JAR 文件之一,只要 somejar.jar 位于 main.jar 的类路径上就可以这样做吗?或者由于主 jar 正在运行“somejar.jar”不再是根目录,所以相对目录是否困惑?
小更新:这一切都将在应用程序服务器上的 Web 环境中运行。
最佳答案
当使用“plain vanilla”时,你不能在 JAR 中包含 JAR。您需要将其放在相对于主 JAR 的已知路径中,或者将 JAR 的内容提取到主 JAR 中。
但是从 Eclipse 3.5 开始,您可以使用内置技巧来做到这一点。当您选择导出 > 可运行的 JAR 文件时,选中第二个库处理选项。
当选择将所需的库打包到生成的 JAR 中时,Eclipse 将添加一个特殊的类加载器,它将在执行主类之前透明地为您加载这些 JAR。它是在 JarRsrcLoader
的帮助下做到这一点的.
关于Java list 文件类路径及其如何确定相对死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464205/