2

JDK 1.6.0 の jaxb 2.0 でバインディング カスタマイズ ファイルを開発しましたが、問題なく動作しました。

現在、JDK 1.6.0_13 で jaxb 2.1.3 を使用していますが、エラーが発生します。

エラー xxx が複数のプロパティに表示される

これは、名前を変更することによってバインディング ファイルが処理していると思われるものです。

2.0 と 2.1.3 の間に何が起こったのか、知っておく必要があり、何を変更する必要があるのか​​。近くも遠くも探しましたがわかりません。どうもありがとうございました。

フィールド名はスキーマの 2 つの異なる部分で使用されるため、スキーマには「キャッチオール」プロパティを取得するプロパティ名がいくつかあるため、バインド カスタマイズ ファイルを使用しています。2 つのフィールドは式とアサーションと呼ばれます

スキーマの解析中に次のエラーが発生します。

[ERROR] Element "assertion" shows up in more than one properties.
line 649 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

[ERROR] The following location is relevant to the above error
line 647 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

[ERROR] Element "expression" shows up in more than one properties.
line 518 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

[ERROR] The following location is relevant to the above error
line 516 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

[ERROR] Element "expression" shows up in more than one properties.
line 522 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

[ERROR] The following location is relevant to the above error
line 516 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd

Failed to parse a schema.

私のxjcコマンドは:

xjc -extension 090403-0_901-Packet-Schema.xsd -b binding.xjb

私のxjbファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.0"
          xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
          xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          jxb:extensionBindingPrefixes="xjc" >

<jxb:bindings schemaLocation="090403-0_901-Packet-Schema.xsd" node="/xs:schema">

<jxb:globalBindings>
    <xjc:superClass name="com.pw.ietm.XMLExtract.IetmElement"/>
</jxb:globalBindings>

<jxb:schemaBindings>
     <jxb:package name="com.pw.ietm.XMLExtract"/>
</jxb:schemaBindings>

<!-- Modify Expression because expression is used in two different parts of a schema -->

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=1]/xs:element[@name='expression'][position()=1]">
    <jxb:property name="expressionFirst"/>
</jxb:bindings>

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=1]/xs:element[@name='expression'][position()=2]">
    <jxb:property name="expressionSecond"/>
</jxb:bindings>

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=2]/xs:element[@name='expression']">
    <jxb:property name="expressionAlone"/>
</jxb:bindings>

<!-- Modify Loop-step because assertion is used in two different parts of a schema -->

<jxb:bindings node="//xs:complexType[@name='loop-step_comtype']/xs:sequence/xs:element[@name='assertion'][position()=1]">
    <jxb:property name="assertionInitial"/>
</jxb:bindings>

<jxb:bindings node="//xs:complexType[@name='loop-step_comtype']/xs:sequence/xs:element[@name='assertion'][position()=2]">
    <jxb:property name="assertionChanging"/>
</jxb:bindings>

</jxb:bindings> <!-- schemaLocation="090403-0_901-Packet-Schema.xsd" node="/xs:schema" -->

スキーマは非常に大きいですが、ここに 2 つのアサーションと式の comtype があります (エラーが指す場所です)。

<xs:complexType name="loop-step_comtype">
<xs:sequence>
<xs:element name="assignment" type="assignment_comtype" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="assertion" type="**assertion_comtype**" minOccurs="0"/>
<xs:element name="expression" type="expression_comtype"/>
<xs:element name="assertion" type="**assertion_comtype**" minOccurs="0"/>
<xs:element name="step-seq" type="step-seq_comtype"/>
</xs:sequence>
<xs:attributeGroup ref="common_attrgroup"/>
</xs:complexType>


<xs:complexType name="expression_comtype">
<xs:choice>
<xs:sequence>
<xs:element name="expression" type="**expression_comtype**"/>
<xs:group ref="binop_elemgroup"/>
<xs:element name="expression" type="**expression_comtype**"/>
</xs:sequence>
<xs:sequence>
<xs:group ref="unop_elemgroup"/>
<xs:element name="expression" type="**expression_comtype**"/>
</xs:sequence>
<xs:element name="property-libref" type="property-libref_comtype"/>
<xs:group ref="value_elemgroup"/>
</xs:choice>
<xs:attributeGroup ref="common_attrgroup"/>
</xs:complexType> 
4

1 に答える 1

0

問題は、実際には 1.6.0 以降の Java バージョンのバグですhttps://jaxb.dev.java.net/issues/show_bug.cgi?id=642で問題 642 を参照してください 問題は解決されましたが、2009 年 8 月 31 日現在修正が組み込まれるリリースの目標日はありません。1.6.0 を使い続けます

于 2009-08-31T19:39:02.310 に答える