1

更新 1: 3 つの最小限の XSD ファイルを使用してこの問題の絞り込みを作成し、問題自体 ( xjcの動作のランダム性ではなく)に焦点を当てた新しい質問をこの SO questionに投稿しました。

更新 2:ここに JAXB のバグトラッカーに関する問題レポートを投稿しました。

エピソードコンパイルを使用して、多数のxsdスキーマファイルを使用したセットアップで、xjcの最新の 2.2.7 JAXB RI実装を使用しています。ビルドにAntを使用しているので、すべてが再現可能ですよね? 違う!xjcコード生成が次のようなメッセージで失敗することが判明しました。

  [xjc] [ERROR] compiler was unable to honor this schemaBinding customization. It is attached to a wrong place, or its inconsistent with other bindings.
  [xjc]   line 581 of file:/home/boohaha/unableToHonorSchemaBinding/CEABase.xsd.episode
  [xjc] 
  [xjc] [ERROR] (the above customization is attached to the following location in the schema)
  [xjc]   line 9 of file:/home/boohaha/unableToHonorSchemaBinding/src/_int/esa/esavo/ivoa/jaxb/schemas/VOResource-v1.0.xsd
  [xjc] 

本当にぞっとするのは、xjc task( ant clean && ant)の連続した Ant 呼び出しが異なる結果をもたらすことです。コンパイルは再び失敗し、同じターゲット ( jaxb-vo.ceaservice ) で失敗します。メッセージのタイプは同じです (尊重できません) が、メッセージの詳細は異なります(他のファイルの他の行について不平を言っています)。 )。少し実験したところ、(複数回の実行で) 4 つまたは 5 つの異なる場所があることがわかりました。すべての場合において、これはファイル内の最後のバインディングであり、xjc解析コードのバグを示唆しています。

しかし、セットアップのバグや間違いが何であれ、コード ジェネレーターがこのランダムな動作を示すとは考えられません。私は偏執症になり、インターネットに接続していない状態で、すべてを何度もテストしました。同じことで、ランダム性は持続しました (興味深いことに、いくつかの行は他の行よりもはるかに頻繁に表示されますが、それは常に最後のバインディングです)。ユースケースを取得して、自分で試すことができます:

git clone https://github.com/mperdikeas/unable_to_honor.git && cd unable_to_honor && ant

私の質問は次のとおりです。

  1. このエラーが発生する理由
  2. xjc速度を上げるために「賢い」スレッドを使用しない限り、コードジェネレーターがランダムに失敗する可能性はありますか

更新 投稿の上部にある更新メモを参照してください。

4

0 に答える 0