【问题标题】:Getting error retrieving data from column family using cassandra-jdbc dreiver使用 cassandra-jdbc 驱动程序从列族检索数据时出错
【发布时间】:2019-07-19 22:03:45
【问题描述】:

当我使用 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();
    }   
}

【问题讨论】:

    标签: java database cassandra


    【解决方案1】:

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

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

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

    如果你想保存dependency hell 尝试使用maven,Datastax java 驱动程序有一个maven central repo,你只需要包含依赖项:

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

    编辑 抱歉,没有意识到您正在使用 JDBC。 cassandra jdbc驱动也有got a maven repository:

    <dependency>
    <groupId>org.apache-extras.cassandra-jdbc</groupId>
    <artifactId>cassandra-jdbc</artifactId>
    <version>1.2.5</version>
    </dependency>
    

    【讨论】:

    • 我如何设置类路径,与java相同或不同。
    • 我得到了解决方案。我添加了“apache-cassandra-1.2.8.jar”,我可以执行程序了。
    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2017-06-23
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2013-10-19
    相关资源
    最近更新 更多