Почему я не могу добавить местоположение конфигурации в Spring executable jar в Windows, используя «-Dspring.config.location»?

#java #spring-boot #jar

#java #spring-boot #jar

Вопрос:

У меня есть простое приложение CMD line, которое использует исполняемый файл jar. Я хочу экстернализировать файлы свойств. Согласно документам, я вижу, что это должно быть возможно, но у меня это не работает. У меня следующее…

 - root
  - target
    lib.jar
  - src
    -test
      -resources
       *.properties
 

Я пытаюсь запустить из целевого каталога, например…

 java -Dspring.config.location=file:///i:/...../src/test/resources -jar lib.jar PARAM
 

Я тоже пробовал..

 java -Dspring.config.location=file:///i:/...../src/test/resources/ -jar lib.jar PARAM
 

Приложение довольно простое…

 @SpringBootApplication(scanBasePackages = {"my.pkg.*"})
public class Application implements CommandLineRunner {
    @Autowired
    private MyService service;
    public static void main(String[] args){
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        service.doSomething();
    }
}
 

Но когда я запускаю, он не может найти файлы…

Вызвано: java.io.FileNotFoundException: ресурс пути к классу [*.properties] не может быть открыт, поскольку он не существует

Чего мне не хватает, я пробовал другие комбинации для пути к файлу, например

 file:i:.....srctestresources -jar lib.jar
 

Но все равно не повезло. Это потому, что, хотя я знаю, что путь правильный, я не уверен, как Java ожидает его при выходе из Windows.

Ответ №1:

Из документа :

 If spring.config.location contains directories (as opposed to files) they should end in / (and will be appended with the names generated from spring.config.name before being loaded). 
 

Комментарии:

1. Добавление косой черты не помогло