首页 > 解决方案 > Spring-Boot 应用程序不尊重 -Dloader.path

问题描述

我的 Spring Boot 应用程序 (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:是否可以在带有胖 jar 的任意目录中使用外部 application.properties 文件?

带有类路径的 Spring Boot 可执行 Jar

标签: javaspring-bootclassloaderspring-boot-maven-plugin

解决方案


我觉得应该是getSystemResource的问题,尝试使用getClassLoader().getResourceAsStream(path)


推荐阅读