繁体   English   中英

无法使用绑定从xsd生成Java类

[英]Failed to generate java classes from xsd using binding

我在生成Java类的路径中有很多XSD。 在我的绑定文件中,我有:

<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中,使用ais3Typy来使用ais3,而在aiseo中使用aiseoTypy。 是否可以选择仅使用一个绑定文件来编写所有此声明。 我知道我可以将其划分为更多文件并在maven中创建更多执行,但是我有10个以上的这个文件* Typy.xsd,所以我只想绑定一个。

schemaLocation的路径不正确。

它应该相对于您的绑定文件。

如果你有类似的东西

workspace/
  -  binding/xyz.xjb
  -  xsd/file.xsd

您应具备:

schemaLocation="../xsd/file.xsd"  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM