getResource(“xmlfile.xml”)抛出java.lang.NullPointerException

时间:2013-07-31 11:06:34

标签: java java-ee

我的网络项目的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

的形式提供

2 个答案:

答案 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)

两件事:

  1. this.getClass().getClassLoader().getResource();使用相对于classpath root的路径。
  2. 如果您的应用程序打包为jar / war使用getResourceAsStream()
  3. 简而言之,请确保您的资源位于类路径上并使用getResourceAsStream()代替。