2016-03-08 12 views
3

只是想嘗試從日食卡桑德拉Java驅動程序,並複製從「實用卡桑德拉」NoClassDefFoundError的:IO /網狀/ UTIL /定時器

的樣本代碼,但通過月食麪臨以下輸出錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/util/Timer 
    at com.datastax.driver.core.Configuration$Builder.build(Configuration.java:294) 
    at com.datastax.driver.core.Cluster$Builder.getConfiguration(Cluster.java:1247) 
    at com.datastax.driver.core.Cluster.<init>(Cluster.java:116) 
    at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:181) 
    at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1264) 
    at SampleApp.connect(SampleApp.java:13) 
    at SampleApp.main(SampleApp.java:64) 
Caused by: java.lang.ClassNotFoundException: io.netty.util.Timer 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 7 more 

這裏是示例代碼:

import com.datastax.driver.core.Cluster; 
import com.datastax.driver.core.Host; 
import com.datastax.driver.core.Metadata; 
import com.datastax.driver.core.Session; 
import com.datastax.driver.core.ResultSet; 
import com.datastax.driver.core.Row; 

public class SampleApp { 
private Cluster cluster; 
private Session session; 

public void connect(String node) { 
    cluster = Cluster.builder().addContactPoint(node).build(); 
    Metadata metadata = cluster.getMetadata(); 
    System.out.printf("Cluster: %s\n", metadata.getClusterName()); 
    for (Host host : metadata.getAllHosts()) { 
     System.out.printf("Host: %s \n",host.getAddress()); 
    } 
    session = cluster.connect(); 
} 
public void close(){ 
    cluster.close(); 
} 
public void createSchema(){ 
    session.execute("CREATE KEYSPACE IF NOT EXISTS portfolio_demo " + 
     "WITH REPLICATION 5 { ‘class’: ‘SimpleStrategy’, " + 
     "'replication_factor’: 1 };"); 
    session.execute("CREATE TABLE IF NOT EXISTS portfolio_demo.portfolio (" + 
      "portfolio_id UUID, ticker TEXT, " + 
      "current_price DECIMAL, current_change DECIMAL, " + 
      "current_change_percent FLOAT, " + 
      "PRIMARY KEY(portfolio_id, ticker));"); 
} 
public void loadData(){ 
    session.execute("INSERT INTO portfolio_demo.portfolio " + 
      "(portfolio_id, ticker, current_price, " + 
      " current_change, current_change_percent) VALUES " + 
      "(756716f7-2e54-4715-9f00-91dcbea6cf50, ‘GOOG’, " + 
      " 889.07, -4.00, -0.45);"); 

    session.execute("INSERT INTO portfolio_demo.portfolio " + 
      "(portfolio_id, ticker, current_price, " + 
      " current_change, current_change_percent) VALUES " + 
      "(756716f7-2e54-4715-9f00-91dcbea6cf50, ‘AMZN’, " + 
      " 297.92, -0.94, -0.31);"); 
} 
public void printResults(){ 
    ResultSet results = session.execute("SELECT * FROM " + 
      "portfolio_demo.portfolio WHERE portfolio_id 5 " + 
      "756716f7-2e54-4715-9f00-91dcbea6cf50;"); 
    for (Row row : results) { 
     System.out.println(String.format("%-7s\t%-7s\t%-7s\t%-7s \n%s", 
       "Ticker", "Price", "Change", "PCT", 
       "........1........1........1........")); 
     System.out.println(String.format("%-7s\t%0.2f\t%0.2f\t%0.2f", 
       row.getString("ticker"), 
       row.getDecimal("current_price"), 
       row.getDecimal("current_change"), 
       row.getFloat("current_change_percent"))); 
    } 
} 
public static void main(String[] args) { 
    SampleApp client = new SampleApp(); 
    client.connect("127.0.0.1"); 
    client.createSchema(); 
    client.loadData(); 
    client.printResults(); 
    client.close(); 
    } 
} 

而且我還添加了下載或附帶日食幾個外部JAR文件:

cassandra-driver-core-3.0.0.jar 
guava-18.0.jar 
netty-3.10.6.Final-20160303.120156-121.jar 
org.apache.log4j_1.2.15.v201012070815.jar (from eclipse plugin) 
org.slf4j.api_1.7.2.v20121108-1250.jar (from eclipse plugin) 
org.slf4j.impl.log4j12_1.7.2.v20131105-2200.jar (from eclipse plugin) 

我看到了與netty錯誤相同的問題,但仍然無法弄清楚我的代碼出了什麼問題。

非常感謝。

回答

1

這是錯誤的Netty版本。該驅動程序的版本3.0.0使用4.0.33。

您可以查看驅動程序的依賴項in the POM。諸如${netty.version}的屬性被定義爲in the parent POM

+0

感謝您的回覆。但它似乎與「netty-3.10.6.Final-20160303.120156-121.jar」無關,因爲我仍然可以通過從構建路徑中移除jar來構建項目。錯誤發生在「cassandra-driver-core-3.0.0.jar」的Configuration.class(Configuration.java的第294行)中,我們可以從錯誤消息中看到該錯誤。 – user1461328

+0

是的,你是對的。這是網絡版本問題 – user1461328

相關問題