Java清单文件';类路径及其确定相对目录的方式
MANIFEST.MF文件中的类路径如何确定相对位置 1) 假设我有一个JAR,JAR在Java清单文件';类路径及其确定相对目录的方式,java,ant,classpath,Java,Ant,Classpath,MANIFEST.MF文件中的类路径如何确定相对位置 1) 假设我有一个JAR,JAR在lib/somejar.JAR中,ofc清单文件在META-INF/manifest.MF中。如何设置类路径。。。。?它是类路径:lib/somejar.jar还是。/lib/somejar.jar 2) 假设somejar.jar中还有主jar所依赖的其他jar。当然,somejar.jar也有自己的MANIFEST.MF文件,其中包含正确设置的类路径字段。现在让我们假设原始的主jar文件在运行时需要访问其
lib/somejar.JAR
中,ofc清单文件在META-INF/manifest.MF
中。如何设置类路径。。。。?它是类路径:lib/somejar.jar
还是。/lib/somejar.jar
2)
假设somejar.jar中还有主jar所依赖的其他jar。当然,somejar.jar也有自己的MANIFEST.MF文件,其中包含正确设置的类路径字段。现在让我们假设原始的主jar文件在运行时需要访问其中一个jar文件,只要somejar.jar位于main.jar的类路径上,它就能够访问这些jar文件吗?或者是因为主jar运行的“somejar.jar”不再是根目录,所以相关目录就乱了
小更新:这一切都将在web环境中运行,在应用服务器上。当执行“普通”操作时,您不能在JAR中使用JAR。您需要将它放在相对于主JAR的已知路径之外,或者在主JAR中提取JAR的内容
但是自从Eclipse3.5以来,您可以通过一个内置的技巧来实现这一点。选择导出>可运行JAR文件时,请选中第二个库处理选项
当选择将所需库打包到生成的JAR中时,Eclipse将添加一个特殊的类加载器,它将在执行主类之前为您透明地加载这些JAR。它是在……的帮助下做的。当你做“纯香草”的时候,你不能在罐子里放一个罐子。您需要将它放在相对于主JAR的已知路径之外,或者在主JAR中提取JAR的内容
但是自从Eclipse3.5以来,您可以通过一个内置的技巧来实现这一点。选择导出>可运行JAR文件时,请选中第二个库处理选项
当选择将所需库打包到生成的JAR中时,Eclipse将添加一个特殊的类加载器,它将在执行主类之前为您透明地加载这些JAR。它是在……的帮助下做到这一点的。这很有趣。从技术上讲,我的产品甚至比罐子里的罐子还要多(main.jar->some.jar->vendorjars…)。现在让我们假设这是在一个应用服务器上,而不是在一个普通的示例中,我不能在一个jar中有一个jar。。。这是否意味着应用服务器正在使用类加载器来加载一些.jar和vendor.jar?不,Eclipse在jar中包含类加载器。JAR将存在于您的代码+第三方JAR+Eclipse代码+特定于Eclipse的MANIFEST.MF中。它可以独立运行。但是如果你不想要一个可运行的JAR(因为你开始谈论appservers,我意识到你不想要(也不能使用)一个可运行的JAR),那么你应该将JAR内容提取到主JAR中(这样原始的JAR类就会在相同的文件夹结构中结束)。绝对不可能将JAR作为一个简单的库放在JAR中,这很有趣。从技术上讲,我的产品甚至比罐子里的罐子还要多(main.jar->some.jar->vendorjars…)。现在让我们假设这是在一个应用服务器上,而不是在一个普通的示例中,我不能在一个jar中有一个jar。。。这是否意味着应用服务器正在使用类加载器来加载一些.jar和vendor.jar?不,Eclipse在jar中包含类加载器。JAR将存在于您的代码+第三方JAR+Eclipse代码+特定于Eclipse的MANIFEST.MF中。它可以独立运行。但是如果你不想要一个可运行的JAR(因为你开始谈论appservers,我意识到你不想要(也不能使用)一个可运行的JAR),那么你应该将JAR内容提取到主JAR中(这样原始的JAR类就会在相同的文件夹结构中结束)。绝对不可能将JAR作为一个简单的库放在JAR中。