刚进入卡桑德拉。设置版本2.0.1和服务器运行正常,并且cqlsh连接并正确执行各种命令,所以我知道基础设施是好的。CQL JDBC 1.2.5是否与cassandra-thrift-2.0.1和cassandra-clientutil-2.0.1兼容?
我有一个小的Java测试程序。我使用的是最新的Java JDK 7的OS X 10.8.3(达尔文):
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
因为卡桑德拉2.0.1需要Java 7,我开始用这些库作为JDBC维基页面注意:
cassandra-jdbc-1.2.5.jar
apache-cassandra-thrift-2.0.1.jar
apache-cassandra-clientutil-2.0.1.jar
并且在调用此代码
String driverClass = "org.apache.cassandra.cql.jdbc.CassandraDriver";
Class.forName(driverClass).newInstance();
// mykeyspace was created in the setup example
java.sql.Connection conn = DriverManager.getConnection("jdbc:cassandra://localhost:9160/mykeyspace");
的getConnection()抛出一个java.lang.NoClassDefFoundError用于组织/阿帕奇/节俭/ TEnum。没问题 - 我发现在libthrift-0.9.1.jar中并将其添加到类路径中。然后,我得到org.apache.cassandra.cql.jdbc.AbstractJdbcType的java.lang.NoClassDefFoundError。我为AbstractJdbcType grep cassandra-jdbc-1.2.5.jar,但找不到它。我用grep抽象,我看到
org/apache/cassandra/cql/jdbc/AbstractConnection.class
org/apache/cassandra/cql/jdbc/AbstractResultSet.class
org/apache/cassandra/cql/jdbc/AbstractStatement.class
我下载的是旧版本的JDBC LIB(1.1.2和1.2.1),但他们没有看到遏制org.apache.cassandra.cql.jdbc。 AbstractJdbcType也是。
谷歌搜索org.apache.cassandra.cql.jdbc.AbstractJdbcType揭示了它在卡桑德拉 - 所有/ 1.0.0构建?也许?
我下载了1.2.5源和重建它,它不能编译,因为的getSchema()不ManagedConnection.java覆盖:
class ManagedConnection extends AbstractConnection implements Connection
...
的getSchema()在Java 7中的java.sql是新的。连接。
我想我的混合罐,JDK的错误版本,或可能2.0.1和1.2.5 JDBC不兼容...?任何人都可以命名适当的一组jar来使用JDBC和v2.0.1吗?