1

685 [main] INFO org.apache.cassandra.cql.jdbc.CassandraConnection-キースペースデモとCQLバージョン2.0.0を使用してlocalhost:9160に接続しましたスレッド "main"の接続されたABC例外java.lang.NoSuchFieldError:org.apacheのスキーマ.cassandra.cql.jdbc.CassandraResultSet。(CassandraResultSet.java:121)at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:167)atorg.apache.cassandra.cql.jdbc.CassandraStatement。 App.main(App.java:32)のexecuteQuery(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

NoSuchMethodは、jar の競合がある場合に発生します。つまり、jar を使用してプロジェクトをビルドし、別のバージョンの jar を使用してアプリケーションを実行する場合。

バージョンが同じかどうかを確認します。

よくある間違いは、Jar をプロジェクトに追加して Eclipse でパスを構築し、再び Server Lib に jar を追加することです。これは、jar の競合に対して脆弱な場合があります。

あなたのために 問題。あなたは2つのことをすることができます

  1. プロジェクトのビルド パスとサーバー パスの両方から Cassandra Jar を削除します。そして、きれいな同じ瓶を両方の場所に置きます。

  2. ビルド パスとサーバー パスからすべての jar を削除します。すべての JARS を WEB-INF/lib フォルダーに配置します。これで、アプリケーションは非常に移植性が高くなります。

于 2012-11-06T09:12:53.740 に答える
0

うん@madhairsilenceは正しいです。コンパイルされたjarと互換性のないjarを取得しました。互換性のない 2 つの jar があるため、新たに開始するか、jar ファイルのバージョンを確認してください (これらは互いにコンパイルされていませんが、異なるバージョンの jar でコンパイルされています)。

于 2012-11-06T20:50:22.120 に答える