【发布时间】:2019-01-30 04:02:26
【问题描述】:
我找到的所有示例都使用 XML 配置文件。我尝试了以下方法:
IdSClientConfigurationImpl config = new IdSClientConfigurationImpl("idsclient.properties");
config.load();
它给出了一个例外
java.io.FileNotFoundException: idsclient.properties (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_152]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_152]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_152]
at com.cisco.ccbu.common.ids.client.impl.IdSClientConfigurationImpl.load(IdSClientConfigurationImpl.java:82) ~[idsclientlib-11.6.1.jar:na]
我将文件放在与application.properties 相同的位置。
$ find src -name idsclient\*
src/main/resources/idsclient.properties
它在mvn spring-boot:run期间被复制到classes文件夹
$ find target -name idsclient\*
target/classes/idsclient.properties
那么在 Spring Boot 应用程序的上下文中文件的真实路径是什么?
我也试过
IdSClientConfigurationImpl config = new IdSClientConfigurationImpl("classpath:/idsclient.properties");
但它给了
java.io.FileNotFoundException: classpath:\idsclient.properties(文件名、目录名或卷标语法不正确)
【问题讨论】:
-
顺便说一下,
IdSClientConfigurationImpl只会接受String。 -
你会想阅读this。磁盘上的物理文件和类路径资源(Spring 尝试使用
classpath:...检索)之间存在非常重要的区别。 -
提供完整的相对路径名有效,但似乎不可打包。
new IdSClientConfigurationImpl("src/main/resources/idsclient.properties"); -
src/main/resources是您的开发环境中的一个位置,不要依赖它。将文件放在您可以阅读的特定位置。或者找到一种不同的方式从类路径中加载它。
标签: java spring spring-mvc spring-boot