2017-02-13 155 views
3

我试图通过Java与我的Cassandra实例进行简单连接。我给cqlsh做了一个'demo'keyspace,并在java程序中创建了一个表。代码如下:java.lang.NoClassDefFoundError:连接Cassandra DB时ch/qos/logback/core/joran/spi/JoranException

罐使用:

  • slf4j.api-1.6.1
  • 卡桑德拉 - 全2.1.2

    public class CassandraConnection { 
    
        public static void main(String[] args){ 
    
         String ipAddress="127.0.0.1"; 
         String keySpace="demo"; 
    
         Cluster cluster; 
    
         Session session; 
    
         cluster=Cluster.builder().addContactPoint(ipAddress).build(); 
    
         session=cluster.connect(keySpace); 
    
         System.out.println("====================Before insert"); 
    
         String cqlInsertStmt="insert into users (lastname,age,city,email,firstname) values" 
         +"('Gopalan',32,'Paramakkudi','[email protected]','Murugan') "; 
    
         session.execute(cqlInsertStmt); 
    
         String cqlSelectStmt="select * from users"; 
         ResultSet resultSet=session.execute(cqlSelectStmt); 
    
         System.out.println("=================After insert"); 
    
         for(Row row: resultSet){ 
    
          System.out.format("%s %s %d %s %s \n", row.getString("firstname"),row.getString("lastname"),row.getInt("age"),row.getString("city"),row.getString("email")); 
         } 
    
         System.out.println("=================After update"); 
    
        } 
    } 
    

我收到以下错误:

Failed to instantiate SLF4J LoggerFactory 
Reported exception: 
java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) 
    at com.datastax.driver.core.Cluster.<clinit>(Cluster.java:60) 
    at CassandraConnection.main(CassandraConnection.java:21) 
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    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 
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) 
    at com.datastax.driver.core.Cluster.<clinit>(Cluster.java:60) 
    at CassandraConnection.main(CassandraConnection.java:21) 
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    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 

回答

7

您必须确保logback JAR位于您的类路径中。

请参阅here初学者;并超出了这一点;真正的收获:运行时间告诉你它找不到某个类;它会为您提供该类别的名称full。或者你看看here来阅读Cassandra关于logback的评论。

你拿那个输入;然后你转向你最喜欢的搜索引擎,以便了解正在发生的事情。

0
Root cause of this issue is required jars not available in classpath. Please add following dependecy, It will solve your issue. 

<dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.1.2</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-log4j12</artifactId> 

       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-core</artifactId> 
      <version>1.1.2</version> 
     </dependency>