1

我正在尝试从我的 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>.

谢谢

4

2 回答 2

2

您无法使用它的路径打开它,因为它不是普通文件,它是 jar 中的文件。

访问它的一种方法是使用输入流

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

您可以从输入流中读取它们

于 2013-08-06T19:20:59.673 回答
0

URL 的“路径”部分不一定与文件系统中的路径相同。实际上,您的 URL 不是文件 URL,因为它指向 JAR 文件。您无法获取路径并在文件系统中查找它。

如果你想在你的应用程序中访问它,你必须使用流。

另请参阅:维基百科上的 URL

于 2013-08-06T19:23:12.230 回答