我尝试下面的代码,但它显示异常:java.lang.NoSuchFieldError

时间:2012-11-06 09:01:24

标签: java exception cassandra

  

685 [main] INFO org.apache.cassandra.cql.jdbc.CassandraConnection - 使用Keyspace演示和CQL版本2.0.0连接到localhost:9160   连接的   ABC   线程“main”java.lang.NoSuchFieldError:schema中的异常       在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.executeQuery(CassandraStatement.java:227)       在App.main(App.java:32)

这是代码:

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();

        }
} 

2 个答案:

答案 0 :(得分:2)

当你有jar冲突时会出现

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

检查版本是否相同。

人们常犯的错误是,将Jars添加到Project以在eclipse中构建路径,并再次在Server Lib中添加jar。这有时候容易受到罐子冲突的影响。

为你问题。你可以做两件事

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

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

答案 1 :(得分:0)

是的@madhairsilence是正确的,你有一个与它编译的jar不兼容的jar。重新开始或检查jar文件的版本,因为你有两个不兼容的jar(它们没有相互编译,但是使用不同版本的jar编译)。

相关问题