Java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException 在连接Cassandra DB时出现。

9
我将尝试通过Java连接到我的Cassandra实例。我在cqlsh中创建了一个名为“demo”的keyspace,并在Java程序中创建了一张表。以下是代码:
使用的Jars:
  • slf4j.api-1.6.1
  • cassandra-all-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','murugan@gmail.com','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
2个回答

11

确保 logback JAR 文件在你的类路径中。

对于初学者,请参考此处;至于更进一步,真正要记住的是:运行时告诉你它找不到某个特定的类,并提供该类的完整名称。或者你可以在这里阅读Cassandra关于logback的说明。

接下来,你需要利用你喜爱的搜索引擎,以弄清楚具体情况。


10

此问题的根本原因是CLASSPATH中缺少所需的JAR文件。请添加以下依赖项-它们将解决您的问题。

<dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</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.2.3</version>
        </dependency>

我的情况是由于.m2中的空JAR文件引起的,我怀疑这是在Maven(3.5.2)在VPN后面无法访问Artifactory时构建时出现的。 - Daniil Iaitskov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接