Реализация клиента FIX через QuickFixJ выдает NoSuchMethodError

Я относительно новичок в FIX, и я впервые пытаюсь подключиться. Я пытаюсь использовать библиотеку QuickFixJ для подключения к предоставленной мне среде UAT. В частности, я использую quickfixj-all-1.6.0.jar.

Я реализовал пример кода из здесь, и он работает до socketAcceptor.start().

Вот полный пример кода:

SocketAcceptor socketAcceptor = null;
   try {
       SessionSettings executorSettings = new SessionSettings(
               "quickFixTester/acceptorSettings.txt");
       Application application = new TestTradeAppExecutor();
       FileStoreFactory fileStoreFactory = new FileStoreFactory(
               executorSettings);
       MessageFactory messageFactory = new DefaultMessageFactory();
       FileLogFactory fileLogFactory = new FileLogFactory(executorSettings);
       socketAcceptor = new SocketAcceptor(application, fileStoreFactory,
               executorSettings, fileLogFactory, messageFactory);
       socketAcceptor.start();
   } catch (ConfigError e) {
       e.printStackTrace();
   }

Ошибка, которую я получаю,

2312 [main] INFO quickfix.SessionSchedule - [FIX.4.4:[SenderCompID]->[TargetCompID]] weekly, SUN 00:00:00-UTC - FRI 00:00:00-UTC
     Executor Session Created with SessionID = FIX.4.4:[SenderCompID]->[TargetCompID]
2327 [main] INFO quickfix.SocketAcceptor - SessionTimer started
2371 [main] INFO quickfix.mina.NetworkingOptions - Socket option: SocketTcpNoDelay=true
2371 [main] INFO quickfix.mina.NetworkingOptions - Socket option: SocketSynchronousWrites=false
2371 [main] INFO quickfix.mina.NetworkingOptions - Socket option: SocketSynchronousWriteTimeout=30000
Exception in thread "main" java.lang.NoSuchMethodError: quickfix.mina.message.FIXProtocolCodecFactory.addMessageDecoder(Ljava/lang/Class;)V
      at quickfix.mina.message.FIXProtocolCodecFactory.<init>(FIXProtocolCodecFactory.java:31)
      at quickfix.mina.acceptor.AbstractSocketAcceptor.startAcceptingConnections(AbstractSocketAcceptor.java:109)
      at quickfix.SocketAcceptor.initialize(SocketAcceptor.java:86)
      at quickfix.SocketAcceptor.start(SocketAcceptor.java:80)
      at quickFixTester.TestTradeAppExecutorApp.main(TestTradeAppExecutorApp.java:38)

Переменные «SenderCompID->TargetCompID» предоставлены, но здесь они удалены из примера.

quickfix.mina.message.FIXProtocolCodecFactory.addMessageDecoder(Ljava/lang/Class;)V Вызывается в методе socketAcceptor.start. Я не вижу никакой причины для этого, поскольку я только изменил примеры конфигурации, чтобы они указывали на среду FIX UAT.

Я не могу понять, почему метод, содержащийся в банке, выдает эту ошибку, я не пытаюсь отправить сообщение на данном этапе, а только пытаюсь открыть соединение. Пример, похоже, сработал для других.

Я получаю точно такую ​​же ошибку, используя пример клиента FIX также найдено здесь


person a.hrdie    schedule 04.06.2015    source источник


Ответы (2)


Вы также ссылались на банку с мина-ядром? В каталоге lib...

А как насчет SSL-фильтра mina? Согласно моему комментарию, NoSuchMethodError для quickfix.mina подразумевает, что на библиотеку не ссылаются.

person rupweb    schedule 05.06.2015
comment
Привет, rupweb, да, я добавил mina-core-2.0.9 в библиотеку - person a.hrdie; 05.06.2015
comment
Это должен быть скорее комментарий, чем ответ. - person DumbCoder; 06.06.2015
comment
да, хотя я думал, что это был ответ. Я не знаю ответа на этот вопрос... Но NoSuchMethodError в quickfix.mina подразумевает отсутствие библиотеки. - person rupweb; 08.06.2015
comment
Или это означает, что версии библиотеки quickfix и mina больше не совместимы - я видел это, когда мне приходилось использовать более старую версию quickfix с mina 2+, где некоторые из этих классов были переписаны/рефакторинг. Решение в моем случае состояло в том, чтобы использовать более старую мину, поскольку у меня была более старая версия quickfixj с расширениями, сделанными клиентом. Если можете, используйте более новую версию quickfixj. - person nsandersen; 02.11.2018

Импорт второго примера как есть вместо того, чтобы пытаться внедрить в свой собственный проект Eclipse. Проблема, по-видимому, была вызвана использованием неправильного импорта из jar-файла quickfix-all, что привело к вызову неправильного метода во время запуска.

person a.hrdie    schedule 08.06.2015
comment
Не могли бы вы объяснить, как именно вы это исправили. Принятое решение для меня бессмысленно, и у меня точно такая же проблема. - person Michael Starkie; 06.11.2019
comment
Привет, извините, кажется, ссылка не работает. Я исправил это, скопировав код из примера строка за строкой, включая зависимости pom. Причина ошибки была прокомментирована выше, выбранные версии библиотек quickfix и mina больше не были совместимы. Если вы еще этого не сделали, попробуйте использовать самые последние библиотеки QuickFIX и mina-core. - person a.hrdie; 06.11.2019
comment
Я решил это, используя mina-core-2.1.3.jar с quickfixj-all-1.6.4.jar. - person Michael Starkie; 20.11.2019