Добавление внешней папки в ClassPath в работающей банке - PullRequest
0 голосов
/ 02 марта 2020

У меня есть проект maven, где я создаю jar с зависимостями, используя плагин сборки maven. У меня также есть внешний файл конфигурации (conf.properties), который требуется jar для правильной работы.

Моя структура проекта выглядит следующим образом:

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

Как добавить эту папку конфигурации в путь к классу файла JAR? Я пытался сделать это, используя команду -cp и манипулируя свойством class-path в файле MANIFEST.MF, но пока безуспешно.

Кто-нибудь знает способ сделать это?

1 Ответ

1 голос
/ 02 марта 2020

Вот как я тестировал (извините, не 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"));
    }
}

Файл манифеста, обратите внимание на пустую строку в конце (записи должны заканчиваться новой строкой (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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...