From: Attila-Mihaly B. <dif...@gm...> - 2014-09-03 11:08:19
|
Hello, I'm trying to use QuickFix to implement an exchange simulator which accepts sessions using multiple FIX versions (4.0, 4.1, etc). I build QuickFix from the Gihub sources using: mvn install I add a dependency on it using: <dependency> <groupId>org.quickfixj</groupId> <artifactId>quickfixj-all</artifactId> <version>1.6.0-SNAPSHOT</version> </dependency> However when I try to run it, it fails with the following error message: java.lang.VerifyError: Bad type on operand stack Exception Details: Location: quickfix/fix41/NewOrderSingle.<init>(Lquickfix/field/ClOrdID;Lquickfix/field/HandlInst;Lquickfix/field/Symbol;Lquickfix/field/Side;Lquickfix/field/OrdType;)V @11: invokevirtual Reason: Type 'quickfix/field/HandlInst' (current frame, stack[1]) is not assignable to 'quickfix/StringField' Current Frame: bci: @11 flags: { } locals: { 'quickfix/fix41/NewOrderSingle', 'quickfix/field/ClOrdID', 'quickfix/field/HandlInst', 'quickfix/field/Symbol', 'quickfix/field/Side', 'quickfix/field/OrdType' } stack: { 'quickfix/fix41/NewOrderSingle', 'quickfix/field/HandlInst' } Bytecode: 0000000: 2ab7 0007 2a2b b600 082a 2cb6 0008 2a2d 0000010: b600 082a 1904 b600 082a 1905 b600 08b1 0000020: at quickfix.fix41.MessageFactory.create(MessageFactory.java:83) at quickfix.DefaultMessageFactory.create(DefaultMessageFactory.java:133) at quickfix.MessageUtils.parse(MessageUtils.java:112) >From what I understand this is because HandlInst is a subclass of StringField in FIX41 but it's a subclass of CharField in later versions. During compilation of the library the first one is used (hence the setField calls in quickfix/fix41/NewOrderSingle refer to setField(StringField)), but in the actual jar we have HandlInst derived from CharField, thus making the class loading fail. Any idea how this should be resolved? Has anyone used QuickFixJ with multiple FIX versions in parallel in the same application? Thank you, Attila Balazs |
From: Christoph J. <chr...@ma...> - 2014-09-08 08:54:44
|
Hi, this is acurrently unresolved problem with the 1.6.0-SNAPSHOT versionof QF/J. Maybe we will treat all fields with different data types throughout the FIX versions simply as StringField in any case. But this has notbeen finalized yet. Cheers, Chris. On 03/09/14 13:08, Attila-Mihaly Balazs wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > > > > > Hello, > > I'm trying to use QuickFix to implement an exchange simulator which accepts sessions using > multiple FIX versions (4.0, 4.1, etc). > > I build QuickFix from the Gihub sources using: mvn install > > I add a dependency on it using: > > <dependency> > <groupId>org.quickfixj</groupId> > <artifactId>quickfixj-all</artifactId> > <version>1.6.0-SNAPSHOT</version> > </dependency> > > However when I try to run it, it fails with the following error message: > > java.lang.VerifyError: Bad type on operand stack > Exception Details: > Location: > quickfix/fix41/NewOrderSingle.<init>(Lquickfix/field/ClOrdID;Lquickfix/field/HandlInst;Lquickfix/field/Symbol;Lquickfix/field/Side;Lquickfix/field/OrdType;)V > @11: invokevirtual > Reason: > Type 'quickfix/field/HandlInst' (current frame, stack[1]) is not assignable to > 'quickfix/StringField' > Current Frame: > bci: @11 > flags: { } > locals: { 'quickfix/fix41/NewOrderSingle', 'quickfix/field/ClOrdID', > 'quickfix/field/HandlInst', 'quickfix/field/Symbol', 'quickfix/field/Side', 'quickfix/field/OrdType' } > stack: { 'quickfix/fix41/NewOrderSingle', 'quickfix/field/HandlInst' } > Bytecode: > 0000000: 2ab7 0007 2a2b b600 082a 2cb6 0008 2a2d > 0000010: b600 082a 1904 b600 082a 1905 b600 08b1 > 0000020: > > at quickfix.fix41.MessageFactory.create(MessageFactory.java:83) > at quickfix.DefaultMessageFactory.create(DefaultMessageFactory.java:133) > at quickfix.MessageUtils.parse(MessageUtils.java:112) > > From what I understand this is because HandlInst is a subclass of StringField in FIX41 but it's a > subclass of CharField in later versions. During compilation of the library the first one is used > (hence the setField calls in quickfix/fix41/NewOrderSingle refer to setField(StringField)), but in > the actual jar we have HandlInst derived from CharField, thus making the class loading fail. > > Any idea how this should be resolved? Has anyone used QuickFixJ with multiple FIX versions in > parallel in the same application? > > Thank you, > Attila Balazs > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > > > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users -- Christoph John Development & Support Direct: +49 241 557080-28 Mailto:Chr...@ma... http://www.macd.com <http://www.macd.com/> ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- MACD GmbH Oppenhoffallee 103 D-52066 Aachen Tel: +49 241 557080-0 | Fax: +49 241 557080-10 Amtsgericht Aachen: HRB 8151 Ust.-Id: DE 813021663 Geschäftsführer: George Macdonald ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- take care of the environment - print only if necessary |