2011-11-06 58 views
0

我正在使用One-Jar的maven插件将我的java打包到一个具有所有依赖关系的jar中。应用程序无法使用One-Jar查找XSD文件

该项目有一个名为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

我很确定JAR中的Jar url连接处理实现无法处理多个嵌套级别(该URL中有2个'!'字符)。不确定单个jar如何处理从嵌套jar文件中读取类文件,但是您可能需要先将xsd解压缩到临时文件,然后才能使用它。个人而言,我通常使用Maven Assembly插件和“jar -with-dependencies”目标,除非你在一个或你的jar中有冲突的文件,否则它工作得很好。

+0

One-Jar应该知道如何处理多个'!'字符。参见[这里](http://www.ibm.com/developerworks/java/library/j-onejar/)。 – summerbulb

+0

@summerbulb - 实际上,根据该链接,似乎onejar使用不使用多个“!”的自定义url方案。 chars – jtahlborn

+0

看起来你是对的。但这只会让问题变得更加糟糕。 – summerbulb

相关问题