java - 将外部文件夹添加到可运行 jar 中的 ClassPath

标签 java maven

我有一个 Maven 项目,我使用 Maven 程序集插件创建一个具有依赖项的 jar。我还有一个外部配置文件(conf.properties),jar 需要它才能正常工作。

我的项目结构是这样的:

  |- abc.jar
  |- config
     |-conf.properties

如何将此配置文件夹添加到 jar 文件的类路径中?我尝试使用 -cp 命令并操作 MANIFEST.MF 文件中的类路径属性来执行此操作,但到目前为止没有运气。

有人知道如何做到这一点吗?

最佳答案

这就是我测试的方式(抱歉,没有maven)!

主类:

package cfh.sf.Chamika;

import java.util.ResourceBundle;

public class ABC {

    public static void main(String[] args) {
        var bundle = ResourceBundle.getBundle("conf");
        System.out.println(bundle.getString("test"));
    }
}

list 文件,注意末尾有空行(条目必须以换行符(CR、LF 或 CRLF)结尾):

Manifest-Version: 1.0
Main-Class: cfh.sf.Chamika.ABC
Class-Path: config/

目录结构

dist/
    abc.jar
    config/
        conf.properties

conf.properties的内容:

test = OK, it is working!

执行方式

java -jar abc.jar
<小时/>

替代方案,不使用ResourceBundle:

package cfh.sf.Chamika;

import java.io.IOException;

public class ABC {

    public static void main(String[] args) {
        try (var input = ClassLoader.getSystemResourceAsStream("conf.properties")) {
            int ch;
            while ((ch = input.read()) != -1) {
                System.out.print((char) ch);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

关于java - 将外部文件夹添加到可运行 jar 中的 ClassPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60495325/

相关文章:

java - gradle 命令失败,因为它无法启动守护进程

maven-war-plugin 不过滤本地

java - mvn混淆器: Is there possible obfuscate dependency before copying

Java BufferedWriter 创建空字符

java - 将 null 传递给覆盖的方法

java - 如何用库依赖链来分发Java应用程序?

java - 在 eclipse 中作为 TestNG Suite 运行项目时如何生成 Allure xml?

maven - 向现有 IntelliJ 模块添加 Maven 支持不可用

java - 线程 "main"java.lang.NullPointerException 位于reactor.core.publisher.FluxFilter$FilterSubscriber.onNext 中出现异常

java - 如何通过websphere ORB调用获取数据库连接?