XJC目录不替换架构导入的本地路径

时间:2015-08-11 21:25:50

标签: java xsd jaxb xjc

我有一个架构a.xsd导入b.xsd。我在schema a.xsd中输入如下:

<xs:import namespace="http://www.example.com/v1.0"
               schemaLocation="b.xsd"/>

我需要使用jar(public sdk)中的schema b.xsd。所以我使用目录文件如下

SYSTEM "b.xsd" "jar:file:example-api-schemas.jar!/schemas/b.xsd" 

SYSTEM "b.xsd" "schemas/b.xsd"以防我在本地文件系统上使用它。

由于我无法编辑任何这些xsd文件,我认为使用目录是唯一的最后手段。但是,在生成目录文件的帮助下生成存根文件时,不会发现异常。 我使用以下命令生成文件

xjc -extension -catalog catalog.cat a.xsd

1 个答案:

答案 0 :(得分:0)

您可能会遇到此问题:

https://java.net/jira/browse/JAXB-942

或许还有其他一些XJC的特殊性。也许XJC会尝试匹配已解析的b.xsd的本地URI,这类似file:..../b.xsd - 这自然与您的目录不匹配。

尝试以下方法:

  • 尝试添加-nv以将XJC置于“非验证”模式。有时它会有所帮助。
  • 您可以尝试通过命名空间进行绑定,而不是通过文件位置进行绑定:

    PUBLIC“urn:namespace:of:b”“jar:file:example-api-schemas.jar!/schemas/b.xsd”

相关问题