2013-08-06 117 views
1

我想從我的WAR文件中獲取文件。從WAR文件獲取文件

URL url2 = getClass().getClassLoader().getResource("/package.xsd"); 

當我打印getPath(),這是輸出:

/C:/workspacesFresh2/.metadata/.plugins/org.eclipse.wst.core/tmp1/wtpwebapps/GServer/WEB-INF/lib/GLibrary.jar!/package.xsd

所以,它找到package.xsd,但我無法與路徑打開它。

關於如何訪問文件的任何想法?

錯誤:

org.xml.sax.SAXParseException; schema_reference.4: Failed to read schema document 'file:/C:/workspacesFresh2/.metadata/.plugins/org.eclipse.server.core/tmp1/wtpwebapps/Server/WEB-INF/lib/GLibrary.jar!/package.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

感謝

+0

你可以定義 「無法打開」?任何錯誤?堆棧跟蹤 ? – VirtualTroll

+0

我已經包含了它 –

回答

2

使用它的路徑,因爲它不是一個正常的文件,你不能打開它,這是一個罐內的文件。訪問它

一個方法是使用輸入流

InputStream stream = this.getClass(). 
    getClassLoader().getResourceAsStream("/package.xsd"); 

而且他們可以從輸入流

0

的URL的「路徑」部分是不一定相同的路徑讀在文件系統中。的確,你的URL不是一個文件的URL,因爲它指向了一個JAR文件。你不能走這條路並在文件系統中查找它。

如果您想在應用程序中訪問它,您必須使用流。

參見:URL on Wikipedia