我在生成 java 类的路径中有很多 XSD。在我的绑定(bind)文件中,我有:
<jaxb:bindings schemaLocation="../aiseo/xsd/AiseoTypy.xsd" node="/xs:schema">
</jaxb:bindings>
但它抛出错误:
[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.1.1:wsdl2java (generate-sources-iszr) on project iszr-dataset: Execution generate-sources-iszr of goal org.apache.cxf:cxf-codegen-plugin:3.1.1:wsdl2java failed: file:/some/path/resources/wsdl/binding/bindings.xml [16,79]: "file:/some/path/resources/wsdl/aiseo/xsd/AiseoTypy.xsd" is not a part of this compilation. Is this a mistake for "file:/some/path/resources/wsdl/ais3/xsd/Ais3Typy.xsd"?
所以我尝试改变它建议我的内容
<jaxb:bindings schemaLocation="../ais3/xsd/Ais3Typy.xsd" node="/xs:schema">
</jaxb:bindings>
但它抛出错误并建议我使用以前的 XSD。
[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.1.1:wsdl2java (generate-sources-iszr) on project iszr-dataset: Execution generate-sources-iszr of goal org.apache.cxf:cxf-codegen- plugin:3.1.1:wsdl2java failed: file:/some/path/resources/wsdl/binding/bindings.xml [15,77]: "file:/some/path/resources/wsdl/ais3/xsd/Ais3Typy.xsd" is not a part of this compilation. Is this a mistake for "file:/some/path/resources/wsdl/aiseo/xsd/AiseoTypy.xsd"?
所以我真的很困惑为什么在这两种情况下它仍然抛出错误
两个 XSD 都应该在路径中,因为正如您所看到的,它为我提供了建议。
更新:
调试后发现问题出在哪里。在第一种情况下,它生成了一些类并在开始处理 wsdl Ais3 时抛出错误...
好的:
[DEBUG] Calling wsdl2java with args: [-encoding, UTF-8, -d, /home/hudect/git/ais3/backend/common-reactor/iszr-dataset/target/generated-sources/cxf, -b, file:/some/path/resources/wsdl/binding/bindings.xml, -xjc-Xinheritance, -verbose, file:/some/path/resources/wsdl/aiseo/wsdl/AiseoCtiAifo.wsdl]
Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -encoding UTF-8 -d /some/path/generated-sources/cxf -b file:/home/some/path/resources/wsdl/binding/bindings.xml -xjc-Xinheritance -verbose file:/some/path/resources/wsdl/aiseo/wsdl/AiseoCtiAifo.wsdl
wsdl2java - Apache CXF 3.1.1
错误:
[DEBUG] Calling wsdl2java with args: [-encoding, UTF-8, -d, /some/path/generated-sources/cxf, -b, file:/some/path/resources/wsdl/binding/bindings.xml, -xjc-Xinheritance, -verbose, file:/some/path/resources/wsdl/ais3/wsdl/Ais3RrcCtiHromadneAifo.wsdl]
Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -encoding UTF-8 -d /some/path/generated-sources/cxf -b file:/some/path/resources/wsdl/binding/bindings.xml -xjc-Xinheritance -verbose file:/some/path/resources/wsdl/ais3/wsdl/Ais3RrcCtiHromadneAifo.wsdl
wsdl2java - Apache CXF 3.1.1
但我不明白为什么它必须在路径中?在 XSD ais3 中使用 Ais3Typy,在 aiseo 中使用 aiseoTypy。是否有选项如何仅使用一个写入所有这些声明的绑定(bind)文件。我知道我可以将它分成更多文件并在 Maven 中创建更多执行,但我有超过 10 个此文件 *Typy.xsd,所以我只想一个绑定(bind)。
最佳答案
schemaLocation 的路径不正确。
它应该与您的绑定(bind)文件相关。
如果你有类似的东西
workspace/
- binding/xyz.xjb
- xsd/file.xsd
你应该有:
schemaLocation="../xsd/file.xsd"
关于java - 无法使用绑定(bind)从 xsd 生成 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045656/