【发布时间】:2018-10-16 21:00:42
【问题描述】:
您好,我有以下项目结构。
我想将我的属性文件存储在我的 jar 之外,这样如果我更改任何属性,它将自动反映。 我的属性文件包含其他服务器的 ip,它可能会改变,所以这就是为什么我想将我的属性文件保留在我的 jar 之外。
我的 resources 文件夹包含我的所有属性文件,包括 application.propeties。
我正在使用以下 sn-p 从我的属性文件中读取数据。
server_1 = new Properties();
server_1.load(PropertyReader.class.getClassLoader().getResourceAsStream("resources/server_1.properties"));
server_2 = new Properties();
server_2.load(PropertyReader.class.getClassLoader().getResourceAsStream("resources/server_2.properties"));
我也试过
server_2.load(PropertyReader.class.getClassLoader().getResourceAsStream("server_2.properties"));
server_2.load(PropertyReader.class.getClassLoader().getResourceAsStream("/server_2.properties"));
但它给了我以下错误:
Caused by: java.lang.NullPointerException: null
我浏览了this 链接,所以我在src 级别创建了resources 文件夹,但我仍然无法理解这种行为。
谢谢
【问题讨论】:
-
您对具有绝对路径的文章感到困惑。您的代码所做的是检查类路径中的资源文件夹。但是你的文件夹在你的类路径之外。
-
能否请您详细说明一下,如果问题出在类路径上,如何解决。
-
添加了一个答案,因为它包含一些代码。看看是否有帮助。请注意,我给出的属性路径取决于您的部署结构,并根据您的需要添加类路径条目。类路径条目是相对于 jar 的位置。
-
刚刚注意到这是一个spring boot项目。我已经更新了答案。将资源文件夹作为属性提及并在应用程序中引用它是一种简洁的方法。
标签: java spring spring-boot properties configuration