【问题标题】:JAR manifest Class-Path, use folder instead of jarJAR manifest Class-Path,使用文件夹而不是 jar
【发布时间】:2018-04-01 14:36:09
【问题描述】:

我有以下目录结构

--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

【问题讨论】:

    标签: java jar resources classpath classloader


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 2017-02-11
      • 2010-11-14
      • 1970-01-01
      • 2018-07-24
      • 2012-11-12
      • 2017-10-04
      • 2013-12-02
      • 2020-01-30
      相关资源
      最近更新 更多