2011-01-24 68 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(第一/略)