我的网络项目的xmlfile.xml
文件夹中有/WebContent/WEB-INF
。
我正在尝试使用;
获取此文件的路径 URL url = this.getClass().getClassLoader().getResource("xmlfile.xml");
String filePath = url.getFile();
但是它会在第二行代码中抛出java.lang.NullPointerException
。
这是什么原因?该文件以WebContent/WEB-INF/xmlfile.xml
答案 0 :(得分:1)
您应该使用ServletContext
:
ServletContext context = .... // get the context here
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/xmlfile.xml");
或者获得真正的道路:
String realPath = context.getRealPath("/WEB-INF/xmlfile.xml");
请记住,Java EE webapp是单个(WAR)文件,因此无法保证对WAR中组件的文件系统访问。您可以使用标准的Java类加载器机制访问对象,但这不会访问不在WAR类路径中的WAR的任何路径( WEB-INF / classes和WEB-INF / lib罐)。因此它在你的情况下失败了。
答案 1 :(得分:0)
两件事:
this.getClass().getClassLoader().getResource();
使用相对于classpath root的路径。getResourceAsStream()
。简而言之,请确保您的资源位于类路径上并使用getResourceAsStream()代替。