java - JAR list 类路径,使用文件夹而不是 jar

标签 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");

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

我正在使用以下命令运行应用程序

java -jar application.jar

最佳答案

它应该可以工作。不确定您的 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 .

关于java - JAR list 类路径,使用文件夹而不是 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46848816/

相关文章:

java - 可调信号量

java - 在不使用正则表达式和 API 的情况下评估多项式字符串

java - Uberjar 中止,因为 jar 失败 : duplicate entry: META-INF/MANIFEST. MF

linux - 确定 Linux 上进程停滞的原因

android - 为什么 Android Studio 找不到资源?

java - 在 Apache Tomcat 中更改站点级别配置

java - Opengl如何在缩放投影矩阵的同时平移光标位置

java - gradle 运行执行;已编译的 JAR 因 ClassNotFoundException 而崩溃

java - 使用 BATCH 文件依次运行两个 JAR

javascript - 在不牺牲 CPU 资源的情况下在 JavaScript web worker 中休眠