getResourceAsStream与项目结构相关的路径?

时间:2015-04-06 07:10:13

标签: java inputstream

我知道这应该很简单,但令人惊讶的是我无法回答。

我有这个结构:

的Myproj

| -src

| --com.mypackagename

| --- MyClass.java

| -xml

| --book.xml

XMLInputFactory factory = XMLInputFactory.newInstance();
ClassLoader cl = MyClass.class.getClassLoader();
XMLStreamReader reader = factory.createXMLStreamReader(cl.getResourceAsStream("xml/book.xml"));

它找不到我的xml。显然,路径是错误的。请帮助我 - 我该如何正确设置

3 个答案:

答案 0 :(得分:1)

问题是getResourceAsStream()只会从类路径加载资源。并且根据给定目录,您的xml文件不在classpath上。因此,将您的xml文件放在 WEB-INF / classes / book.xml 下并将其访问为:

getResourceAsStream("book.xml")

答案 1 :(得分:0)

如果book.xml文件保存在类路径中,则可以通过编写cl.getResourceAsStream("book.xml")来访问它。

答案 2 :(得分:0)

假设xml目录不在应用程序的类路径上下文中(即嵌入在应用程序Jar中或使用classpath属性),那么您需要将XML文件引用为{{1} }。相对于程序执行位置的路径。

如果File目录在类路径上下文中(即xml),那么您将需要使用类似classpath=.\xml;...的路径。

如果/book.xml目录相对于类路径上下文(即xml),那么您将需要使用类似classpath=.;...的路径。

如果/xm/book.xml目录嵌入在应用程序上下文中(打包在Jar中),则需要使用xml/book.xml,具体取决于目录的打包方式