如何检索.properties?

时间:2011-11-13 17:39:31

标签: java maven resources

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

如果需要类路径相对路径,请使用:

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

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

答案 1 :(得分:1)

您应该从类路径加载属性文件,而不是从显式文件系统位置加载:

 applicationProperties.load(new BufferedInputStream(this.getClass().getResourceAsStream( "/application.properties" );

只要您的IDE配置为在类路径中包含resources目录(这应该是Maven的默认目录),那么无论您是否在IDE中运行,这都将有效,因为maven会将资源复制到打包档案时的正确位置。