java - 如何检索.properties?

标签 java maven resources

我正在使用 Maven 开发桌面 Java 应用程序。 我得到了一个 *.properties 文件,我需要在执行期间检索该文件(src/resources/application.properties)。 我唯一想到的是使用:

private Properties applicationProperties;
applicationProperties.load(new BufferedInputStream(new FileInputStream("src/resources/application.properties")));

如果我直接从 IDE 运行我的应用程序,这将起作用。 我想保持输出层次结构清晰,因此我设置 maven 将资源文件夹直接复制到目标文件夹(这是输出应用程序的 basedir)。这样 application.properties 文件将不会加载(因为我有 target/resources/application.properties 但没有 target/src/resources/application.properties)。

管理资源的最佳方法是什么,以便它们在我从 IDE 调试并直接运行构建的 jar 文件时都可以工作?

最佳答案

不要期望文件位于 src 文件夹中 - 它在运行时不存在。属性文件位于 /bin 中。但也不要依赖于此。因为 FileInputStream 仅采用绝对路径。

当您需要类路径相对路径时,请使用:

InputStream is = YourClass.class.getResourceAsStream("/a.properties")`

(maven 将文件从 /src/main/resources 发送到类路径的根目录)

关于java - 如何检索.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113384/

相关文章:

c++ - CMake:使用 target_compile_options 设置 ggc-min-expand 和 -heapsize

java - Java导入MQTT客户端

java - 如何在 Netbeans 中排除 module-info.java (11)?

java - 如何在 HTTPUrlConnection 中取消设置 ContentHandlerFactory

maven - pom.xml 中的标签注释有何用处?

java - 使用@Autowired环境读取属性文件 spring java 空指针异常

asp.net-mvc - 如何替换 Asp.net MVC 2 中的默认 ModelState 错误消息?

java - 获取目录中的所有图像 - jar 文件中

java - 如何从Java中的ArrayList中删除所有内容,但第一个元素

java - Proguard 混淆导致 java.lang.IllegalArgumentException : class declares multiple JSON fields named "a"