从战争中加载配置文件

时间:2014-02-14 14:53:54

标签: java maven war

我有一个Maven项目,我试图将其打包为战争和罐子。作为我的应用程序/ servlet初始化的一部分(取决于我是运行jar还是战争),我需要读取一个名为server.ini的文件。我已将文件放在src/main/resources/server.ini中,并尝试加载它:

System.class.getResourceAsStream("server.ini");

但是,这总是导致null。我做错了什么?

3 个答案:

答案 0 :(得分:1)

server.ini文件应位于资源目​​录的根目录中。

webapp放入http,您可以通过classpath将文件设为可用,但您需要在{{1}}上访问该文件,这意味着您应该将其放在资源中目录。

答案 1 :(得分:1)

很有可能web.xmlcontext.xml更适合您尝试做的事情,但是......

尝试将server.ini放入WEB-INF/classes,或执行this之类的操作。

答案 2 :(得分:1)

问题在于我使用的是具有非限定路径的System类加载器,因此期望在server.ini包中找到我的java.lang

由于我的文件位于src/main/resources,我应该使用当前类的类加载器,并使用绝对路径:

getClass().getResourceAsStream("/server.ini")

这适用于战争和罐子。

Preferred way of loading resources in Java”问题对资源加载有很好的解释。