2

カサンドラに入ったばかりです。バージョン 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 のセットを指定できる人はいますか?

4

2 に答える 2

0

Cassandra apache-cassandra-1.2.18-bin.tar.gz にロールバックしました。それでも同じ問題に直面しました。apache-cassandra-1.2.18/lib の下にあるすべての jar *.jar をクラス ライブラリに入れようとしました。問題は解決された。不足しているライブラリをいくつか含めた後、問題が解消されますように。

時間がありませんが、lib を /lib の下に 1 つずつ配置して、問題を解決するためにどれが必要かをテストしてみてください。

マン・パク・ホン、デイブ manpakhong@hotmail.com

于 2014-07-23T09:01:21.200 に答える