1

我正在尝试使用 cassandra-jdbc 驱动程序在 GlassFish 中为 Cassandra 设置连接池。我已将驱动程序 jar(以及它所依赖的所有 jar)放在 ~glassfish-domain/lib/ext 文件夹中,但是当我尝试 ping 时出现以下错误:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.cassandra.cql.jdbc.CassandraDriver Could not initialize class org.apache.cassandra.cql.jdbc.CassandraDriver

GlassFish 似乎找到了该类,但无法加载它。由于所有的依赖关系都得到满足,一个可能的原因是静态块中存在异常。我检查了 CassandraDriver 的代码,它实际上有一个静态块:

    static
    {
        // Register the CassandraDriver with DriverManager
        try
        {
            CassandraDriver driverInst = new CassandraDriver();
            DriverManager.registerDriver(driverInst);
        }
        catch (SQLException e)
        {
            throw new RuntimeException(e.getMessage());
        }
    }

提前致谢!

4

1 回答 1

0

似乎 slf4j 没有正确加载,因为它依赖于 log4j.jar。所以我在类路径中添加它之后,一切似乎都工作正常。这是我的库中所有 jar 的列表:

apache-cassandra-1.1.6.jar
apache-cassandra-clientutil-1.1.6.jar
apache-cassandra-thrift-1.1.6.jar
cassandra-jdbc-1.1.2.jar
commons-lang-2.4.jar
guava-r08 .jar
libthrift-0.7.0.jar
log4j-1.2.14.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar

于 2012-11-14T15:08:06.073 回答