Я пытаюсь написать класс для преобразования доменных 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 вместе, но, насколько мне известно, я этого не делаю. Я использую тот же код, что и в модульные тесты QuickFixJ Вариант того же кода работает в в этом примере, это происходит после того, как соединение установлено через объект-инициатор. Я использую apache.servicemix.bundles.quickfix вместо QuickFix-all.jar, потому что он содержит некоторые поля, которые мне нужно добавить в другие сообщения.
Я не уверен, почему я не могу вызвать простой конструктор объекта. Конструктор в банке выглядит следующим образом:
public NewOrderSingle()
{
getHeader().setField(new MsgType("D"));
}
Есть ли другая возможная причина этой ошибки, о которой я не подумал? я в тупике