1

当我使用 Cssandra-JDBC 驱动程序从列族中检索数据时。我有错误

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Ljava/nio/ByteBuffer;Lorg/apache/cassandra/thrift/Compression;Lorg/apache/cassandra/thrift/ConsistencyLevel;)Lorg/apache/cassandra/thrift/CqlResult;

at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:447)
at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:472)
at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:161)
at org.apache.cassandra.cql.jdbc.CassandraStatement.executeQuery(CassandraStatement.java:226)
at CassandraJDBCTest.main(CassandraJDBCTest.java:19)

代码是

public static void main (String args[]) throws SQLException{

    try {
        Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
    Connection con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/TestExample");
        Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT Name,Age FROM Users WHERE keyname='001';");

     rs.next();


        System.out.println(rs.getString("Name"));


       System.out.println(rs.getInt(2));
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
}
4

1 回答 1

0

您缺少依赖项:
线程“main”java.lang 中的异常。NoSuchMethodError

我感觉类路径配置不正确(为什么是 L?):

Ljava/nio/ByteBuffer;
Lorg/apache/cassandra/thrift/Compression;
Lorg/apache/cassandra/thrift/ConsistencyLevel;
...

如果您想避免依赖地狱,请尝试使用 maven,Datastax java 驱动程序有一个maven 中央存储库,您只需要包含依赖项:

<dependency>
   <groupId>com.datastax.cassandra</groupId>
   <artifactId>cassandra-driver-core</artifactId>
   <version>1.0.2</version>
</dependency>

编辑 对不起,没有意识到您正在使用 JDBC。cassandra jdbc 驱动程序也有一个 maven 存储库

<dependency>
<groupId>org.apache-extras.cassandra-jdbc</groupId>
<artifactId>cassandra-jdbc</artifactId>
<version>1.2.5</version>
</dependency>
于 2013-09-03T10:53:32.313 回答