我正在使用maven开发桌面java应用程序。我得到了一个需要在执行期间检索的*.properties文件(src/resources/application.properties)。我唯一想到的就是使用:
private Properties applicationProperties;
applicationProperties.load(new BufferedInputStream(new FileInputStream("src/resources/application.properties")));如果我直接从IDE运行我的应用程序,这将会起作用。我想保持输出层次结构清晰,所以我将maven设置为直接将resources文件夹复制到目标文件夹(这是输出应用程序的基目录)。这样就不会加载application.properties文件(因为我有目标/resources/application.properties,但没有target/src/resources/application.properties)。
当我从IDE调试和直接运行构建的jar文件时,管理资源的最佳方法是什么?
发布于 2011-11-14 01:46:58
不要期望文件会在src文件夹中-它在运行时并不存在。属性文件转到/bin。但也不要依赖这一点。因为FileInputStream只接受绝对路径。
当您需要类路径相对路径时,请使用:
InputStream is = YourClass.class.getResourceAsStream("/a.properties")`(maven将文件从/src/main/resources发送到类路径的根目录)
发布于 2011-11-14 01:48:58
您应该从类路径加载属性文件,而不是从显式文件系统位置加载:
applicationProperties.load(new BufferedInputStream(this.getClass().getResourceAsStream( "/application.properties" );只要您的IDE配置为包括类路径上的资源目录(这应该是maven的默认目录),那么无论您是否在IDE中运行,这都将起作用,因为maven在打包归档文件时会将资源复制到正确的位置。
https://stackoverflow.com/questions/8113384
复制相似问题