ドメイン POJO を QuickFixJ メッセージに変換するためのクラスを作成しようとしています。次のように新しい注文メッセージを作成しようとすると:
quickfix.fix44.NewOrderSingle order = new quickfix.fix44.NewOrderSingle();
次の例外がログにスローされます。
Exception Details:
Location:
quickfix/fix44/NewOrderSingle.get(Lquickfix/field/SettlType;)Lquickfix/field/SettlType; @2: invokevirtual
Reason:
Type 'quickfix/field/SettlType' (current frame, stack[1]) is not assignable to 'quickfix/CharField'
Current Frame:
bci: @2
flags: { }
locals: { 'quickfix/fix44/NewOrderSingle', 'quickfix/field/SettlType' }
stack: { 'quickfix/fix44/NewOrderSingle', 'quickfix/field/SettlType' }
Bytecode:
0000000: 2a2b b600 3057 2bb0
このエラーは、Fix Message Fields の 2 つのバージョンを一緒にマージしようとすると発生するようですが、私が知る限り、これを行っていません。QuickFixJ 単体テストで見つかったものと同じコードを使用しています。この例では、同じコードのバリエーションが機能します。これは、イニシエーター オブジェクトを介して接続が適用された後です。他のメッセージに追加する必要があるいくつかのフィールドが含まれているため、QuickFix-all.jar の代わりに apache.servicemix.bundles.quickfix を使用しています。
オブジェクトの単純なコンストラクターを呼び出せない理由がわかりません。jar のコンストラクターは次のとおりです。
public NewOrderSingle()
{
getHeader().setField(new MsgType("D"));
}
私が考えていなかったこのエラーの別の原因はありますか? 私は困惑しています