2

我正在尝试编写一个用于将域 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                    

尝试将两个版本的修复消息字段合并在一起时似乎会发生此错误,但据我所知,我没有这样做。我使用的代码与QuickFixJ 单元测试中的代码相同 在此示例中使用相同代码的变体中,相同代码的变体有效,它是在通过发起程序对象应用连接之后。我使用的是 apache.servicemix.bundles.quickfix 而不是 QuickFix-all.jar,因为它包含一些我需要添加到其他消息中的字段。

我不确定为什么我不能调用对象的简单构造函数。jar中的构造函数如下:

public NewOrderSingle()
{
   getHeader().setField(new MsgType("D"));
}

我还没有想到这个错误还有另一个可能的原因吗?我很难过

4

1 回答 1

2

我遇到了这个问题,不得不恢复到 QuickFIX 1.5.2

quickfixj 消息工厂使用 qf 1.6.0 和 java 1.8.0_45 在操作数堆栈上产生错误类型

根据用户组,这是一个已知问题。见附件问题...

于 2015-08-14T12:38:58.927 回答