我知道这应该很简单,但令人惊讶的是我无法回答。
我有这个结构:
的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。显然,路径是错误的。请帮助我 - 我该如何正确设置
答案 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
,具体取决于目录的打包方式