1

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

4

2 回答 2

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 jars)。因此,在您的情况下它失败了。

于 2013-07-31T11:12:45.063 回答
0

两件事情:

  1. this.getClass().getClassLoader().getResource();使用相对于类路径根的路径。
  2. 如果您的应用程序被打包为 jar/war,请使用getResourceAsStream().

简而言之,请确保您的资源位于类路径中并改用 getResourceAsStream() 。

于 2013-07-31T11:26:23.937 回答