【发布时间】:2012-03-02 16:23:54
【问题描述】:
我想从我的类路径中获取一个 xml 文件来解组它并将其用于测试目的。 我的问题是将它作为 InputStream 获取。 我写了这些行,但我总是得到一个空结果。
InputStream is = getClass().getResourceAsStream("WebContent/WEB-INF/classes/testing/"+ COMPLETE_DOCUMENT + ".xml");
当然,您在方法参数中看到的路径是我的文件的路径。 我尝试了几种组合:
WebContent/WEB-INF/classes/testing/
classpath:testing/
classpath*:testing/
但我总是得到 InputStream = null。
我什至尝试切换到
ClassLoader.getResourceAsStream(...)
但什么也没发生。我想资源的路径在某种程度上是错误的,但我不知道在哪里。从我的 servlet.xml 中,我使用类路径中的一些资源来配置 PropertyPlaceholderConfigurer 或 Jaxb2Marshaller,仅使用语法
"classpath:folder/file.xsd"
而且效果很好。我要从中加载我的 xml 的文件夹是上面示例中的同级文件夹。 我错过了什么?
编辑: 我尝试遵循 spring ClassPathResource helper 类方法,但我得到了一个奇怪的行为:正如我之前所说,我已经在启动时通过一些 spring bean 从类路径加载了一些资源。如果我在 dardo 建议的代码中使用此类资源的路径,如下所示:
ClassPathResource cpr = new ClassPathResource("xmlschemas/lrinode.xsd");
InputStream is = cpr.getInputStream();
我仍然收到FileNotFound Exception!
当然"xmlschemas/lrinode.xsd"是我在启动时成功加载的xsd。即使我使用资源的完整路径(从应用程序的根目录开始),它也不起作用。
我开始认为我错过了一些微不足道的事情。
【问题讨论】: