java - 无法使用绑定(bind)从 xsd 生成 java 类

标签 java xml binding xsd

我在生成 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/

相关文章:

cocoa - nsdocument nswindowcontroller nsviewcontroller - 一个 xib?

c# - 将 IBindingList 转换为 DataTable

java - Android:在选项卡式应用程序的 fragment 中保留 ListView 内容的最佳方式?

java - 在已有的类中实现 Spring 事务处理

javascript - 使用 XML 解析器从用户获取最近的 YouTube 视频

javascript - 如何在 javascript 中发送 SOAP 请求,就像在 SoapUI 中一样

javascript - Breeze 和 knockout 未正确绑定(bind)

JAVA - Socket.accept() 卡住用户界面

Java - 每秒重绘组件?

javascript - 使用 javascript 创建图表