通过 QuickFixJ 实现 FIX 客户端抛出 NoSuchMethodError
Implementing a FIX client through QuickFixJ throws NoSuchMethodError
我对 FIX 比较陌生,这是我第一次尝试连接。我正在尝试使用 QuickFixJ 库连接到提供给我的 UAT 环境。具体来说,我正在使用 quickfixj-all-1.6.0.jar
我已经实现了 here 的示例代码,并且一直运行到 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 环境
我无法理解为什么 jar 中包含的方法会抛出此错误,我在此阶段不尝试发送消息,只是尝试打开连接。这个例子似乎对其他人有用。
我也使用 FIX 客户端示例 found here 得到完全相同的错误
您是否也引用了 mina-core jar?在 lib 目录中...
mina SSL 过滤器怎么样?根据我的评论,quickfix.mina 的 NoSuchMethodError 表示未引用库。
按原样导入 second example 而不是尝试将其实施到我自己的 Eclipse 项目中。问题似乎是由于从 quickfix-all jar 中使用了不正确的导入,导致在启动期间调用了错误的方法。
我对 FIX 比较陌生,这是我第一次尝试连接。我正在尝试使用 QuickFixJ 库连接到提供给我的 UAT 环境。具体来说,我正在使用 quickfixj-all-1.6.0.jar
我已经实现了 here 的示例代码,并且一直运行到 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 环境
我无法理解为什么 jar 中包含的方法会抛出此错误,我在此阶段不尝试发送消息,只是尝试打开连接。这个例子似乎对其他人有用。
我也使用 FIX 客户端示例 found here 得到完全相同的错误
您是否也引用了 mina-core jar?在 lib 目录中...
mina SSL 过滤器怎么样?根据我的评论,quickfix.mina 的 NoSuchMethodError 表示未引用库。
按原样导入 second example 而不是尝试将其实施到我自己的 Eclipse 项目中。问题似乎是由于从 quickfix-all jar 中使用了不正确的导入,导致在启动期间调用了错误的方法。