我知道有很多主题,但我似乎已经尝试了一切。我可以把我的文件名放在那里,如果有一个src文件夹,它会找到它,
InputStream is = context.class.getClassLoader().getResourceAsStream("file.props");
但是当我们把它放在apache服务器上时,不会自动创建一个src文件夹,所以它没有找到它。我已经尝试将它直接放在web-inf文件夹和
中InputStream is = context.class.getClassLoader().getResourceAsStream("/WEB-INF" + File.separator + "file.props");
但是这总是返回null。这是什么原因?该文件存在于那里,为什么它找不到它?
答案 0 :(得分:1)
您似乎使用了错误的ClassLoader
。调用context.class.getClassLoader()
可提供ClassLoader
类(ServletContext
)加载的context.class
。你想要的是 web应用程序的类ClassLoader
,它们是context.getClassLoader()
。
答案 1 :(得分:0)
如果要从/WEB-INF
加载文件,请不要使用ClassLoader。相反,请将ServletContext
方法用于此目的:
// In your servlet e.g. doGet method
ServletContext app = super.getServletContext();
InputStream in = app.getResourceAsStream("/WEB-INF/file.props");
请注意,无论操作系统,文件系统等是什么,都可以使用/
如果您真的想使用ClassLoader
,请接受@ rickz的建议并将file.props
移至WEB-INF/classes
。