2011-01-24 84 views
10

我有一个很大的问题,在做一些非常愚蠢的事情。也就是说打开一个流到我的META-INF文件夹中的资源文件。我正在研究一个jar工具,并且这么做:无法从META-INF读取文件

InputStream schemaIS = this.getClass().getClassLoader().getResourceAsStream("/META-INF/schema.xsd"); 

我只是得到一个null!该项目是使用maven构建的,xsd文件最终位于META-INF文件夹中,但它仍然不起作用。

我不明白的是它背后的理论吗? ClassLoader如何在文件系统中执行查找?我如何获得文件?

+3

它是一个Web应用程序? – Bozho 2011-01-24 12:47:03

回答

23

尝试删除第一个斜杠:

InputStream schemaIS = this.getClass().getClassLoader().getResourceAsStream("META-INF/schema.xsd"); 

你需要一个斜线,如果要调用Class对象上getResourceAsStream方法。在一个ClassLoader对象上,路径始终是绝对路径,并且不需要前导斜杠。

+0

如果它是位于类路径根目录的常规META-INF,则需要使用前导斜杠。 – Bozho 2011-01-24 12:48:26

2

尝试这条道路:META-INF/schema.xsd(第一/略)