LINUX.ORG.RU

Получить доступ к файлу из .jar

 , , ,


0

1

Создается Spring Boot проект. Есть файл application.properties, в котором прописан путь к config.

config.path=config.txt
Файл config.txt лежит в корне проекта.

ApplicationConfiguration.java:

@Bean
    public Config config() throws IOException {
        ConfigParser configParser = new JsonConfigParser();


        String configPath = environment.getProperty("config.path");

        return configParser.parse(Paths.get(configPath));
    }
При запуске jar, не находит config.txt. Так собираю и запускаю jar
mvn clean
mvn install -Dmaven.test.skip=true
java -jar project-0.0.1-SNAPSHOT.jar

Как надо передавать config в jar ?или как включить его в jar

https://www.mkyong.com/spring/spring-resource-loader-with-getresource-example/

А ещё лучше официальная документация https://docs.spring.io/spring/docs/4.3.x/spring-framework-reference/html/reso...

Файл config.txt лежит в корне проекта.

А вы уверены, что в jar-то он попадает?.. Легко проверить - jar - это zip-архив, можете распаковать, можете любым файловым менеджером «зайти» туда, через тот же mc.

Вообще если это resource-file, его обычно кладут в ./src/main/resources/

BattleCoder ★★★★★
()
Последнее исправление: BattleCoder (всего исправлений: 2)
Ответ на: комментарий от BattleCoder

он туда не попадает,если собирать так как собираю я. предполагается, что config.txt будет меняться и поэтому помещать его в сам jar файл не имеет смысла,видимо. если положить его в ./src/main/resources/ то он все равно не видит файла

AmeRain
() автор топика

Твой код предполагает, что этот файл лежит в текущей директории, из которой ты запускаешь программу. Если его там нет, поправь путь или запускай из другой директории (или выбери какой-то другой вариант).

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

если я положу config.txt в ./src/main/resources/ его не видно при запуске jar. потому что после генерации jar он лежит в BOOT-INF/classes

как ссылаться на него в коде относительно jar,а брать путь где-то во вне?

AmeRain
() автор топика
Ответ на: комментарий от AmeRain

если я положу config.txt в ./src/main/resources/ его не видно при запуске jar. потому что после генерации jar он лежит в BOOT-INF/classes

Если ты его положишь в src/main/resources то грузить тебе его надо класслоадером, а не через файлы.

как ссылаться на него в коде относительно jar,а брать путь где-то во вне?

Я не совсем понял, что ты хочешь, но попробуй посмотреть на System.getProperty. При запуске будешь писать java -Dconfig=path/to/config.txt -jar project-0.0.1-SNAPSHOT.jar

Legioner ★★★★★
()
Ответ на: комментарий от AmeRain

Вы всё-таки прочитайте ссылку, которую я вам кинул - там же ВСЁ написано.

Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
BattleCoder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.