Java 通过QuickFixJ实现修复客户端会抛出NoSuchMethodError

Java 通过QuickFixJ实现修复客户端会抛出NoSuchMethodError,java,quickfix,fix-protocol,quickfixj,Java,Quickfix,Fix Protocol,Quickfixj,我是个新手,这是我第一次尝试连接。我正在尝试使用QuickFixJ库连接到提供给我的UAT环境。具体来说,我使用的是quickfixj-all-1.6.0.jar 我已经从实现了示例代码,它一直工作到socketAcceptor.start() 以下是完整的代码示例: SocketAcceptor socketAcceptor = null; try { SessionSettings executorSettings = new SessionSettings(

我是个新手,这是我第一次尝试连接。我正在尝试使用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)
2312[main]INFO quickfix.SessionSchedule-[FIX.4.4:[SenderCompID]->[TargetCompID]]每周,周日00:00:00-UTC-周五00:00:00-UTC
使用SessionID=FIX.4.4:[SenderCompID]->[TargetCompID]创建的执行者会话
2327[main]INFO quickfix.SocketAcceptor-会话计时器已启动
2371[main]INFO quickfix.mina.NetworkingOptions-套接字选项:SocketTcpNoDelay=true
2371[main]INFO quickfix.mina.NetworkingOptions-套接字选项:SocketSynchronousWrites=false
2371[main]INFO quickfix.mina.NetworkingOptions-套接字选项:SocketSynchronousWriteTimeout=30000
线程“main”java.lang.NoSuchMethodError中出现异常:quickfix.mina.message.FixProtocolCodeFactory.addMessageDecoder(Ljava/lang/Class;)V
位于quickfix.mina.message.FIXProtocolCodecFactory。(FIXProtocolCodecFactory.java:31)
位于quickfix.mina.acceptor.AbstractSocketAcceptor.startAcceptingConnections(AbstractSocketAcceptor.java:109)
在quickfix.SocketAcceptor.initialize处(SocketAcceptor.java:86)
在quickfix.SocketAcceptor.start(SocketAcceptor.java:80)
位于quickfixtest.TestTradeAppExecutorApp.main(TestTradeAppExecutorApp.java:38)
提供了“SenderCompID->TargetCompID”变量,但已从此处的示例中删除

quickfix.mina.message.FixProtocolCodeFactory.addMessageDecoder(Ljava/lang/Class;)V在socketAcceptor.start方法中抛出。我看不出这有什么原因,因为我只更改了配置示例,以指向修复UAT环境

我无法理解为什么jar中包含的方法会抛出这个错误,我在这个阶段并没有尝试发送消息,只是尝试打开一个连接。这个例子似乎也适用于其他人


我在使用FIX客户端示例时也遇到了完全相同的错误

您是否也引用了mina core jar?在lib目录中


mina SSL过滤器呢?根据我的评论,quickfix.mina的NoSuchMethodError表示未引用库

导入原样而不是试图实现到我自己的Eclipse项目中是可行的。问题似乎是由于使用了来自quickfix all jar的不正确导入,导致在启动期间调用了错误的方法

你好,rupweb,是的,我已经在LIB中添加了mina-core-2.0.9。这应该更多的是一个评论,而不是一个答案。是的,尽管我认为这是答案。我不知道这个问题的答案。。。但是quickfix.mina中的NoSuchMethodError意味着缺少库。或者它意味着quickfix和mina库版本不再兼容-我在不得不使用mina 2+的旧quickfix版本时看到了这一点,其中一些类已被重写/重构。在我的案例中,解决方案是使用较旧的mina,因为我有一个较旧版本的quickfixj,其扩展由客户机完成。如果可以,请使用更新的quickfixj版本来代替。请您解释一下您是如何准确地修复此问题的。接受的解决方案对我来说毫无意义,我也有同样的问题。嗨,很抱歉,链接现在断了。我通过逐行复制示例代码(包括pom依赖项)修复了这个问题。错误原因已在上面进行了注释,选定的quickfix和mina库版本不再兼容。。如果还没有,请尝试使用最新的QuickFIX和mina core库。我通过使用mina-core-2.1.3.jar和quickfixj-all-1.6.4.jar解决了这个问题