我有一个架构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
答案 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”