Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正在尝试以下代码,但显示异常:java.lang.NoSuchFieldError_Java_Exception_Cassandra - Fatal编程技术网

我正在尝试以下代码,但显示异常:java.lang.NoSuchFieldError

我正在尝试以下代码,但显示异常:java.lang.NoSuchFieldError,java,exception,cassandra,Java,Exception,Cassandra,685[main]INFO org.apache.cassandra.cql.jdbc.CassandraConnection-使用密钥空间演示和cql版本2.0.0连接到本地主机:9160 有联系的 基础知识 线程“main”java.lang.NoSuchFieldError中出现异常:架构 位于org.apache.cassandra.cql.jdbc.CassandraResultSet.(CassandraResultSet.java:121) 位于org.apache.cassand

685[main]INFO org.apache.cassandra.cql.jdbc.CassandraConnection-使用密钥空间演示和cql版本2.0.0连接到本地主机:9160 有联系的 基础知识 线程“main”java.lang.NoSuchFieldError中出现异常:架构 位于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();

        }
} 

当您遇到jar冲突时,不会出现任何方法。例如,当您使用jar构建项目并使用不同版本的jar运行应用程序时

检查版本是否相同

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

给你一个问题。你可以做两件事

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

  • 从生成路径和服务器路径中删除所有JAR。将所有JAR放在WEB-INF/lib文件夹中。现在,您的应用程序具有很好的可移植性


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

    实际上我正在使用linux,我已经在运行时库文件夹中添加了所有jar文件,这不是问题所在,因为数据插入代码运行正常,但获取数据不起作用。我无法完全对角化,因为我看不到。但我可以让您理解。您可以看到org.apache.cassandra.cql.jdbc.CassandraResultSet。(CassandraResultSet.java:121所以,错误在jar文件中。您没有遇到任何编译错误,因为您添加的jar有此方法。但是在运行时,服务器找不到该方法。这肯定是错误版本的bcoz。您在插入bcoz时没有遇到问题,该方法在编译和运行版本中都存在。我建议t为了检查版本,我已经包含了org.apache.cassandra包的最新版本。我没有得到您要我做的事情。domy项目是简单的目录结构,与eclipse项目和我在/user/lib/jvm文件夹中添加的所有jar文件不同,在.bashrc文件中给出了路径