Java getResourceAsStream返回null,带有标记支持
我有一个扩展TagSupport的类文件,这里我想读取一个属性文件,但它不起作用。我认为getResourceAsStream正在返回null 我在bith系统上使用爆炸战争文件 代码: 公共类MyTag扩展了标记支持{Java getResourceAsStream返回null,带有标记支持,java,jsp,tags,Java,Jsp,Tags,我有一个扩展TagSupport的类文件,这里我想读取一个属性文件,但它不起作用。我认为getResourceAsStream正在返回null 我在bith系统上使用爆炸战争文件 代码: 公共类MyTag扩展了标记支持{ private int getUsers() { ServletContext servletContext = pageContext.getServletContext(); InputStream in = pageContext.getServletCo
private int getUsers() {
ServletContext servletContext = pageContext.getServletContext();
InputStream in = pageContext.getServletContext().getResourceAsStream("/WEB-INF/app.properties");
Properties properties = new Properties();
properties.load(in);
int users= Integer.parseInt(properties.getProperty("users"));
return users; }
}
这段代码在我的电脑上运行,但在测试系统上不起作用。我得到以下例外情况:
位于的java.lang.NullPointerException错误[STDERR]
java.util.Properties$LineReader.readLine(Properties.java:418)错误
[STDERR]位于java.util.Properties.load0(Properties.java:337)
java.util.Properties.load(Properties.java:325)处出现错误[STDERR]
为什么您的
应用程序属性
位于/WEB-INF
中?如果是/WEB-INF/classes
,您只需调用getResourceAsStream(“/app.properties”)
。这是因为to的参数是相对于类路径解析的。我认为这是另一回事。但为什么它在开发系统上工作而不是在测试中工作呢?很难说不知道任何一个系统(操作系统、JDK版本、应用服务器等等)。但一般来说,属性文件和其他资源放在/WEB-INF/classes
中。谢谢。那么我的代码有什么问题吗。使用getServletContext,它允许您加载相对于上下文根的资源。