2017-01-17 11 views
0

"factoryFactoryクラス内で2つの宣言が衝突する"という問題を解決するには、 "factoryMethod"を使用する必要があります。しかし、私は "コンパイラはこのfactoryMethodのカスタマイズを尊重することができませんでした"と受け取ります。 "factoryMethod"についての情報は見つかりませんでした。私はそれを正しく使用していないようだ。私の簡略化されたスキーマを見てください:コンパイラはこのfactoryMethodのカスタマイズを尊重することができません

<?xml version='1.0' encoding='UTF-8' ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"> 
    <xs:element name="UseCase"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="StepAction" > 
        <xs:annotation> 
         <xs:appinfo> 
          <jxb:factoryMethod name="createStepAction" /> 
         </xs:appinfo> 
        </xs:annotation> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

私は "xjc%schemaname%"を使ってクラスを生成します。

答えて

0

jxb:factoryMethodは、xjcが不満な要素に対してのみ使用できるようです。私の例では、私はStepActionと同じレベルに他の元素を添加することにより、「コンパイラは、このfactoryMethodのカスタマイズを尊重することができませんでした」が発生しました:

<?xml version='1.0' encoding='UTF-8' ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"> 
    <xs:element name="UseCase"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="StepAction" > 
        <xs:annotation> 
         <xs:appinfo> 
          <jxb:factoryMethod name="createStepAction" /> 
         </xs:appinfo> 
        </xs:annotation> 
       </xs:element> 

       <xs:element name="Step-Action"/> <!-- causes Compiler was unable to honor this factoryMethod customization --> 

      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

XJCコンパイラは、このfactoryMethodのカスタマイズを尊重することができませんでした」スローされません。 " この場合。

私の結論:

  • 一つjxb使用することはできません:「2つの宣言はObjectFactoryのクラスの衝突を引き起こす」XJCが得られない場合のObjectFactoryのて、createXXXメソッドの名前を変更するにはfactoryMethodをエラー
  • "2つの宣言により、ObjectFactoryクラスの衝突が発生します。"同じレベル(兄弟)に名前が競合する複数の要素がある場合に生成されます。それらが異なるレベルにある場合、xjcは不平を言わないでしょう。クラス注釈がのObjectFactoryのて、createXXX方法には影響を与えません
:名前私はXJCの形質転換の後に同じです(例えば、「StepAction」と「StepAction」は同じです)名前を意味
  • jxbの競合により、
  • 関連する問題