JAR清单Class-Path,使用文件夹而不是jar

时间:2017-10-20 12:12:13

标签: java jar resources classpath classloader

我有以下目录结构

--conf
|   |
|   --foo.properties
|
--lib
   |
   --application.jar

在我的application.jar' MANIFEST.mf文件中,我有以下条目:Class-Path: ../conf/

在jar中的类(由jar的main方法调用)中,我尝试使用以下代码将 foo.properties 文件作为类路径资源加载

URL properties = this.getClass().getClassLoader().getResource("foo.properties");

但是,无法从类路径中找到资源。为什么在jar清单中没有使用Class-Path属性?我是否误解了它如何影响应用程序类加载器类路径?

我使用以下命令

运行应用程序

java -jar application.jar

1 个答案:

答案 0 :(得分:1)

它应该工作。不确定,您的MANIFEST.mf格式是否正确。我用Maven生成了它,它可以工作。这就是我MANIFEST.mf的样子,

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: john.doe
Class-Path: ../conf/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_92
Main-Class: com.basaki.misc.clazzpath.FindResource

您可以找到完整的示例here