剛進入卡桑德拉。設置版本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嗎?