我正在使用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作为资源,它可以识别它。
答案 0 :(得分:0)
我非常确定jre中的Jar url连接处理实现不能处理多个嵌套级别(该url中有2个'!'字符)。不确定one-jar如何处理从嵌套jar中读取类文件,但您可能需要先将xsd解压缩到临时文件,然后再使用它。
就个人而言,我通常使用带有“jar-with-dependencies”目标的maven程序集插件,除非你的一个或你的罐子里有冲突的文件,否则它会正常工作。