カサンドラに入ったばかりです。バージョン 2.0.1 をセットアップすると、サーバーは正常に動作し、cqlsh が接続してさまざまなコマンドを適切に実行するため、インフラストラクチャに問題がないことがわかります。
小さな Java テスト プログラムがあります。OS X 10.8.3 (Darwin) で最近の Java 7 JDK を使用しています。
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)
Cassandra 2.0.1 には Java 7 が必要なためです。jdbc wiki ページに記載されているように、これらのライブラリから始めました。
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() は、org/apache/thrift/TEnum に対して java.lang.NoClassDefFoundError をスローします。問題ありません - libthrift-0.9.1.jar でそれを見つけ、それをクラスパスに追加しました。次に、org.apache.cassandra.cql.jdbc.AbstractJdbcType に対して java.lang.NoClassDefFoundError を取得します。AbstractJdbcType の cassandra-jdbc-1.2.5.jar を grep しましたが、見つかりません。Abstractを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 をグーグルで検索すると、それが cassandra-all/1.0.0 ビルドにあることがわかりますか? 多分?
1.2.5 のソースをダウンロードして再構築しましたが、ManagedConnection.java で getSchema() がオーバーライドされていないため、コンパイルに失敗しました。
class ManagedConnection extends AbstractConnection implements Connection
...
getSchema() は Java 7 java.sql.Connection の新機能です。
間違ったバージョンの jar、JDK、またはおそらく 2.0.1 を混合していると思いますが、jdbc 1.2.5 は互換性がありません...? JDBC と v2.0.1 を使用するための適切な jar のセットを指定できる人はいますか?