应用程序无法使用One-Jar查找XSD文件

时间:2011-11-06 12:55:34

标签: java maven xsd executable-jar

我正在使用One-Jar的maven插件将我的java打包成一个包含所有依赖项的jar。

该项目有一个名为schema.xsd的资源。

当我使用java -jar myJar.one-jar运行jar文件时出现以下错误:

 org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document
 'jar:file:/../lib/myJar.one-jar.jar!/lib/myJar.jar!/schema.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>.

知道为什么会这样吗?

注意:应用程序有一个log4j.properties作为资源,它可以识别它。

1 个答案:

答案 0 :(得分:0)

我非常确定jre中的Jar url连接处理实现不能处理多个嵌套级别(该url中有2个'!'字符)。不确定one-jar如何处理从嵌套jar中读取类文件,但您可能需要先将xsd解压缩到临时文件,然后再使用它。

就个人而言,我通常使用带有“jar-with-dependencies”目标的maven程序集插件,除非你的一个或你的罐子里有冲突的文件,否则它会正常工作。