如何使用java中的classloader从web inf资源文件夹中读取属性文件

时间:2015-07-01 08:41:27

标签: java

使用类加载器读取保存在WEB-INF / resource内的属性文件的任何建议。类似的东西: -

String fileName = "/WEB-INF/resource/my.properties";
InputStream input =MyClass.class.getClassLoader().getResourceAsStream(fileName);
properties = new Properties(); 
properties.load(input);

(注意 - 我不想使用servletcontext读取)

找到上述代码的错误: -

java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)

3 个答案:

答案 0 :(得分:2)

使用ServletContext访问您的Web资源而不是类加载器

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String)

servletContext.getResourceAsString("/WEB-INF/resource/my.properties");

答案 1 :(得分:0)

当您使用getResourceAsStream()时,您将默认进入资源文件夹。除非您的WEB-INF位于资源文件夹中,否则由于它不存在而无法找到它。

如果您的源文件夹是src / main / com / mycompany / myapp /以及web-inf所在的位置,那么您的路径应该是

String sourcePath = "../WEB-INF/resource/my.properties"

因为你必须返回一个文件夹(进入项目根目录)并进入WEB-INF文件夹。

答案 2 :(得分:0)

我使用了这种方法

=SUMPRODUCT(($A$1:$A$10000=$A1)*($A1<>""))>1