Spring-Boot应用程序不支持-Dloader.path

时间:2019-02-26 03:49:55

标签: java spring-boot classloader spring-boot-maven-plugin

我的Spring启动应用(v2.1.1.RELEASE)使用以下插件和布局进行打包:

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <finalName>my-service-${project.version}</finalName>
                        <mainClass>com.my.app.MainClass</mainClass>
                        <layout>ZIP</layout>
                    </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我正在使用以下启动脚本:

java -Dloader.path=/path/to/config/dir/ -jar my-service-1.0.jar

在我的应用具有的一种依赖关系中,以下代码用于读取外部xml配置文件(例如hbase-site.xml):

URL url = ClassLoader.getSystemResource(filename);

这就是为什么我尝试使用loader.path使这些文件可用,但该应用程序仍然无法读取提供的目录中存在的文件的原因。我还想念其他东西吗?

已经推荐:Spring Boot: Is it possible to use external application.properties files in arbitrary directories with a fat jar?

Spring Boot Executable Jar with Classpath

1 个答案:

答案 0 :(得分:0)

我认为这应该是getSystemResource的问题,请尝试使用getClassLoader()。getResourceAsStream(path)