1

685 [main] INFO org.apache.cassandra.cql.jdbc.CassandraConnection - 使用 Keyspace 演示和 CQL 版本 2.0.0 连接到 localhost:9160 线程“main”java.lang.NoSuchFieldError 中连接的 ABC 异常:org.apache 的模式.cassandra.cql.jdbc.CassandraResultSet.(CassandraResultSet.java:121) 在 org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:167) 在 org.apache.cassandra.cql.jdbc.CassandraStatement。在 App.main(App.java:32) 处执行查询(CassandraStatement.java:227)

这是代码:

try 
{ 
    Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver"); 
    Connection conn = DriverManager.getConnection("jdbc:cassandra://localhost:9160/demo"); 

    if (conn != null)
    {
            System.out.println("Connected");
    }



    //String sql = "INSERT INTO employee (eid,eadd,ename,esal,sex) VALUES (2499,'bangalore','amit',10000,'male')"; 
    Statement stmt = conn.createStatement(); 

    //stmt.execute(sql);
    System.out.println("ABC");
    String sql="select *  from employee";       
    ResultSet rs=stmt.executeQuery(sql);
    //System.out.println(rs);
    //System.out.println("value inserted");
    while(rs.next()) 
         {

            System.out.println("id="+rs.getString(1));

            System.out.println();

        }
} 
4

2 回答 2

2

当您有 jar 冲突时,会出现NoSuchMethod 。即当您使用 jar 构建项目并使用不同版本的 jar 运行应用程序时。

检查版本是否相同。

人们常犯的错误是,将 jars 添加到项目以在 eclipse 中构建路径,然后再次在服务器库中添加 jars。这在一段时间内容易受到 jar 冲突的影响。

给你的问题。你可以做两件事

  1. 从项目构建路径和服务器路径中删除 Cassandra Jar。并在两个地方放置一个干净的同一个罐子。

  2. 从构建路径和服务器路径中删除所有 jar。将所有 JARS 放在 WEB-INF/lib 文件夹中。现在您的应用程序非常便携。

于 2012-11-06T09:12:53.740 回答
0

是的@madhairsilence 是正确的,您得到的 jar 与编译时使用的 jar 不兼容。重新启动或检查 jar 文件的版本,因为您有两个不兼容的 jar(它们没有相互编译,而是使用不同版本的 jar 编译)。

于 2012-11-06T20:50:22.120 回答