Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.NoClassDefFoundError: Could not initialize class com.datastax.driver.core.Cluster

I have a maven project A

pom.xml for the project A :

<dependencies>
       <dependency> 
            <groupId>com.app.cops</groupId>
            <artifactId>cassandra-logging</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
</dependencies>

pom.xml of the project cassandra-logging:

<dependencies>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty</artifactId>
            <version>3.9.0.Final</version>
        </dependency>
        <dependency>
            <groupId>com.codahale.metrics</groupId>
            <artifactId>metrics-core</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
            <version>3.0.0</version>
        </dependency>   
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-mapping</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>
  </dependencies>

The cops-logging projecct has the following code :

CassandraCopsComponentLogger.instance = new CassandraCopsComponentLogger();

                String hosts = CassandraClientUtil.getHost();
                String localDC = CassandraClientUtil.getLocalDC();
                Cluster cluster;
                if (StringUtils.isNotEmpty(localDC))
                {
                    cluster = Cluster.builder().addContactPoints(hosts.split(","))
                            .withCredentials(CassandraCopsComponentLogger.USER_NAME, CassandraCopsComponentLogger.AUTH_CODE)
                            .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_ONE))
                            .withLoadBalancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().withLocalDc(localDC).build())).build();
                }
                else
                {
                    cluster = Cluster.builder().addContactPoints(hosts.split(","))
                            .withCredentials(CassandraCopsComponentLogger.USER_NAME, CassandraCopsComponentLogger.AUTH_CODE)
                            .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_ONE)).build();
                }

                Session session = cluster.connect();
                CassandraCopsComponentLogger.mappingManager = new MappingManager(session);

I keep on getting exception on the following line :

cluster = Cluster.builder().addContactPoints(hosts.split(","))

I have a unit test in cassandra-logging project which works fine with this code. But when I call the same code from project A I get the

java.lang.NoClassDefFoundError: Could not initialize class com.datastax.driver.core.Cluster
like image 962
Prasad Shinde Avatar asked Oct 31 '22 05:10

Prasad Shinde


2 Answers

I was able to resolve this by downgrading the cassandra dependency version to <version>2.1.9</version>. Not sure how that helped but I was able to move forward.

like image 186
Prasad Shinde Avatar answered Nov 15 '22 12:11

Prasad Shinde


Update the version of cassandra-driver-core and cassandra-driver-mapping to 3.3.0 - this worked for me:

        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
            <version>3.3.0</version>
        </dependency>   
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-mapping</artifactId>
            <version>3.3.0</version>
        </dependency>
like image 40
BigBug Avatar answered Nov 15 '22 13:11

BigBug