0

我正在用 QuickFIX/J(1.6.0 版)编写一个 Java 程序。

只要我只登录到文件,一切都可以正常工作。现在,我想添加 JDBC 日志记录:

SessionSettings sessionSettings = null;

try {

    sessionSettings = new SessionSettings(pathToFixConfigFile);

    logger.info("Everything okay");
} catch (ConfigError e) {

    logger.error("Error: ", e);
    throw (e);
}

MessageStoreFactory messageStoreFactory = new JdbcStoreFactory(
sessionSettings);

LogFactory[] factorioes = { new FileLogFactory(sessionSettings),
new JdbcLogFactory(sessionSettings) };

LogFactory logFactory = new CompositeLogFactory(factorioes);

MessageFactory messageFactory = new DefaultMessageFactory();

try {

    socketInitiator = new SocketInitiator(xitaroApplication,
    messageStoreFactory, sessionSettings, logFactory,
    messageFactory);

} catch (ConfigError e) {

    logger.error("Error: ", e);
    throw (e);
}

我收到以下错误:

quickfix.ConfigError: error during session initialization
    at quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractSocketInitiator.java:168)
    at quickfix.mina.initiator.AbstractSocketInitiator.createSessionInitiators(AbstractSocketInitiator.java:83)
    at quickfix.SocketInitiator.initialize(SocketInitiator.java:114)
    at quickfix.SocketInitiator.start(SocketInitiator.java:89)
    at de.my.program.main(MyProgram.java:191)
Caused by: java.lang.NoClassDefFoundError: org/logicalcobwebs/cglib/proxy/Callback
    at org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.java:261)
    at org.logicalcobwebs.proxool.ProxoolDataSource.getConnection(ProxoolDataSource.java:97)
    at quickfix.JdbcUtil.determineSessionIdSupport(JdbcUtil.java:127)
    at quickfix.JdbcLog.<init>(JdbcLog.java:88)
    at quickfix.JdbcLogFactory.create(JdbcLogFactory.java:38)
    at quickfix.CompositeLogFactory.create(CompositeLogFactory.java:55)
    at quickfix.Session.<init>(Session.java:460)
    at quickfix.DefaultSessionFactory.create(DefaultSessionFactory.java:183)
    at quickfix.mina.SessionConnector.createSession(SessionConnector.java:141)
    at quickfix.mina.initiator.AbstractSocketInitiator.createSessions(AbstractSocketInitiator.java:162)
    ... 4 more
Caused by: java.lang.ClassNotFoundException: org.logicalcobwebs.cglib.proxy.Callback
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more

我已将 QuickFIX 中的所有库添加到类路径中,但错误不会消失:/

我知道,我的问题有点笨拙。但我越来越绝望,希望以这种方式获得帮助。

感谢你们!!

4

3 回答 3

1

这个问题是 quickfix 二进制分发缺少 proxool-cglib.jar 文件。当您在会话设置文件中指定 JDBC 驱动程序时,quickfix 会自动尝试使用 proxool 创建连接池。它依赖于 proxool-cglib.jar jar 中的一个类。要修复,只需下载 proxool-cglib.jar 文件并将其添加到您的类路径中。你可以在这里下载:http: //proxool.sourceforge.net/download.html

于 2016-08-31T16:32:56.517 回答
0

你显然仍然缺少一些依赖。您的问题听起来很像这个问题,其中有人还需要包含Apache Logging Commons jar 文件。

于 2015-04-22T17:23:48.397 回答
0

如果您使用 Intellij IDE,这将很容易。如果你需要,我可以给你一个工作项目。:)

我认为您的 POM 文件中一定存在问题。请检查您的依赖项。我认为仍然缺少一些库。

于 2015-04-24T14:32:51.493 回答