Java не может читать внешние свойства в одном каталоге с файлом .jar - PullRequest
0 голосов
/ 20 марта 2019

Я создаю jar-приложение и использую maven-shade-plugin для его упаковки. В нем есть несколько файлов свойств, и я использую PropertyPlaceholderConfigurer для чтения свойств:

   <bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:/properties/core.properties</value>
        </list>
    </property>
</bean>

Поскольку я хочу обновить свойства гибкого файла, я делаю это для исключения свойств, когда пакет:

        <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
            <excludes>
                <exclude>properties/core.properties</exclude>
            </excludes>
        </resource>
    </resources>

После упаковки jar, я создаю каталог свойств, содержащий core.properties и помещаю его в тот же каталог, где находится файл jar. Когда я запускаю файл jar:

java -jar test.jar

Может читать свойства в файлах core.properties.

Но если я создаю приложение springboot и выполняю те же шаги, но упаковываю его с помощью Spring-boot-maven-plugin Затем запустите банку с той же командой:

java -jar test.jar

Произошла ошибка:

Caused by: java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)
at org.springframework.core.io.support.EncodedResource.getInputStream(EncodedResource.java:159)
at org.springframework.core.io.support.PropertiesLoaderUtils.fillProperties(PropertiesLoaderUtils.java:99)
at org.springframework.core.io.support.PropertiesLoaderUtils.fillProperties(PropertiesLoaderUtils.java:73)
at org.springframework.core.io.support.PropertiesLoaderUtils.loadProperties(PropertiesLoaderUtils.java:59)
at org.springframework.core.io.support.ResourcePropertySource.<init>(ResourcePropertySource.java:67)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...