-1

プロジェクトのセットアップ:

Project Domains には、jibx 構成のないすべてのドメイン オブジェクトが含まれます。

Class A {
  List<A> list;
}

プロジェクト JibxTest には、jibx 構成が含まれており、Domains.jar が含まれています。

Project JibxTest で binding.xml を次のように構成しようとすると、次のようになります。

<binding>
    <mapping name="A" class="Domains.A" ordered="false">
          <collection item-type="Domains.A" field="list" usage="optional" create- type="java.util.ArrayList"/> 
    </mapping>
</binding>  

JIBX 例外が発生しています:

Error during code generation for file 'C:\JIBXTest/binding.xml' -
     [bind]  this may be due to an error in your binding or classpath, or to an error in the JiBX code ***
     [bind] java.lang.IllegalStateException: Internal error - cannot modify class Domains.A loaded from C:\JIBXTest\lib\Domains.jar

Domain.A クラスを JibxTest プロジェクトにコピーし、バインディング ファイルを変更します。できます。

4

1 に答える 1

-5

このメールごとに:

パブリック フィールドまたはメソッドのみを使用している限り、JiBX は jar 内のクラスを操作できるはずです。フィールドが公開されていない場合は、公開の get/set メソッド (利用可能な場合) に切り替えるか、クラス ファイルを unjar して、JiBX バインディング コンパイラが変更できるようにする必要があります。

Java では getter と setter を持つのが標準なので、それらを追加することをお勧めします。

于 2013-11-07T16:46:15.813 に答える