Hi @all,

I came back to this issue today...

@Robert:
"com/codahale/metrics/Metric" class was not available in the user code jar

Even after adding the metric class into the build-jar profile of the pom
file, more "class not found" errors occur. So the only solution was to add
the whole dependency:

<dependency>
   <groupId>com.codahale.metrics</groupId>
   <artifactId>metrics-core</artifactId>
   <version>3.0.2</version>
</dependency>


This worked for me.

Best,
Nico



2017-03-06 11:46 GMT+01:00 Chesnay Schepler <[email protected]>:

> Hello,
>
> i believe the cassandra connector is not shading it's dependencies
> properly. This didn't cause issues in the
> past since flink used to have a dependency on codahale metrics as well.
>
> Please open a JIRA for this issue.
>
> Regards,
> Chesnay
>
>
> On 06.03.2017 11:32, Tarandeep Singh wrote:
>
> Hi Robert & Nico,
>
> I am facing the same problem (java.lang.NoClassDefFoundError:
> com/codahale/metrics/Metric)
> Can you help me identify shading issue in pom.xml file.
>
> My pom.xml content-
> ---------------------------------------------
>
> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";   
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
> http://maven.apache.org/xsd/maven-4.0.0.xsd";>   
> <modelVersion>4.0.0</modelVersion>      <groupId>rfk-dataplatform</groupId>   
> <artifactId>stream-processing</artifactId>   <version>0.1.0</version>   
> <packaging>jar</packaging>   <name>Stream processing</name>   <properties>    
>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      
> <flink.version>1.2.0</flink.version>      
> <slf4j.version>1.7.7</slf4j.version>      
> <log4j.version>1.2.17</log4j.version>   </properties>   <dependencies>      
> <dependency>         <groupId>org.apache.flink</groupId>         
> <artifactId>flink-streaming-java_2.10</artifactId>         
> <version>${flink.version}</version>      </dependency>      <dependency>      
>    <groupId>org.apache.flink</groupId>         
> <artifactId>flink-clients_2.10</artifactId>         
> <version>${flink.version}</version>      </dependency>      <dependency>      
>    <groupId>org.apache.flink</groupId>         
> <artifactId>flink-connector-cassandra_2.10</artifactId>         
> <version>1.2.0</version>      </dependency>        <dependency>            
> <groupId>org.apache.flink</groupId>            
> <artifactId>flink-statebackend-rocksdb_2.10</artifactId>            
> <version>1.2.0</version>        </dependency>      <dependency>         
> <groupId>org.slf4j</groupId>         <artifactId>slf4j-log4j12</artifactId>   
>       <version>${slf4j.version}</version>      </dependency>      
> <dependency>         <groupId>log4j</groupId>         
> <artifactId>log4j</artifactId>         <version>${log4j.version}</version>    
>   </dependency>        <dependency>            
> <groupId>org.apache.avro</groupId>            <artifactId>avro</artifactId>   
>          <version>1.8.1</version>        </dependency>        <dependency>    
>         <groupId>org.testng</groupId>            
> <artifactId>testng</artifactId>            <version>6.8</version>            
> <scope>test</scope>        </dependency>        <!-- flink kafka connector 
> -->        <dependency>            <groupId>org.apache.flink</groupId>        
>     <artifactId>flink-connector-kafka-0.8_2.10</artifactId>            
> <version>1.2.0</version>        </dependency>        <!-- java influxdb 
> client -->        <dependency>            <groupId>org.influxdb</groupId>     
>        <artifactId>influxdb-java</artifactId>            
> <version>2.5</version>        </dependency>    </dependencies>   <profiles>   
>    <profile>         <!-- Profile for packaging correct JAR files -->         
> <id>build-jar</id>         <activation>            
> <activeByDefault>false</activeByDefault>         </activation>         
> <dependencies>            <dependency>               
> <groupId>org.apache.flink</groupId>               
> <artifactId>flink-java</artifactId>               
> <version>${flink.version}</version>               <scope>provided</scope>     
>        </dependency>            <dependency>               
> <groupId>org.apache.flink</groupId>               
> <artifactId>flink-streaming-java_2.10</artifactId>               
> <version>${flink.version}</version>               <scope>provided</scope>     
>        </dependency>            <dependency>               
> <groupId>org.apache.flink</groupId>               
> <artifactId>flink-clients_2.10</artifactId>               
> <version>${flink.version}</version>               <scope>provided</scope>     
>        </dependency>            <dependency>               
> <groupId>org.slf4j</groupId>               
> <artifactId>slf4j-log4j12</artifactId>               
> <version>${slf4j.version}</version>               <scope>provided</scope>     
>        </dependency>            <dependency>               
> <groupId>log4j</groupId>               <artifactId>log4j</artifactId>         
>       <version>${log4j.version}</version>               
> <scope>provided</scope>            </dependency>         </dependencies>      
>       <build>            <plugins>               <!-- disable the exclusion 
> rules -->               <plugin>                  
> <groupId>org.apache.maven.plugins</groupId>                  
> <artifactId>maven-shade-plugin</artifactId>                  
> <version>2.4.1</version>                  <executions>                     
> <execution>                        <phase>package</phase>                     
>    <goals>                           <goal>shade</goal>                       
>  </goals>                        <configuration>                           
> <artifactSet>                              <excludes 
> combine.self="override"></excludes>                           </artifactSet>  
>                       </configuration>                     </execution>       
>            </executions>               </plugin>            </plugins>        
>  </build>      </profile>   </profiles>   <build>      <plugins>         
> <plugin>            <groupId>org.apache.maven.plugins</groupId>            
> <artifactId>maven-shade-plugin</artifactId>            
> <version>2.4.1</version>            <executions>               <!-- Run shade 
> goal on package phase -->               <execution>                  
> <phase>package</phase>                  <goals>                     
> <goal>shade</goal>                  </goals>                  <configuration> 
>                     <artifactSet>                        <excludes>           
>                 <!-- This list contains all dependencies of flink-dist        
>                    Everything else will be packaged into the fat-jar          
>                  -->                           
> <exclude>org.apache.flink:flink-annotations</exclude>                         
>   <exclude>org.apache.flink:flink-shaded-hadoop2</exclude>                    
>        <exclude>org.apache.flink:flink-shaded-curator-recipes</exclude>       
>                     <exclude>org.apache.flink:flink-core</exclude>            
>                <exclude>org.apache.flink:flink-java</exclude>                 
>           <exclude>org.apache.flink:flink-scala_2.10</exclude>                
>            <exclude>org.apache.flink:flink-runtime_2.10</exclude>             
>               <exclude>org.apache.flink:flink-optimizer_2.10</exclude>        
>                    <exclude>org.apache.flink:flink-clients_2.10</exclude>     
>                       <exclude>org.apache.flink:flink-avro_2.10</exclude>     
>                       
> <exclude>org.apache.flink:flink-examples-batch_2.10</exclude>                 
>           <exclude>org.apache.flink:flink-examples-streaming_2.10</exclude>   
>                         
> <exclude>org.apache.flink:flink-streaming-java_2.10</exclude>                 
>           <exclude>org.apache.flink:flink-streaming-scala_2.10</exclude>      
>                      
> <exclude>org.apache.flink:flink-scala-shell_2.10</exclude>                    
>        <exclude>org.apache.flink:flink-python</exclude>                       
>     <exclude>org.apache.flink:flink-metrics-core</exclude>                    
>        <exclude>org.apache.flink:flink-metrics-jmx</exclude>                  
>          <exclude>org.apache.flink:flink-statebackend-rocksdb_2.10</exclude>  
>                          <!-- Also exclude very big transitive dependencies 
> of Flink                           WARNING: You have to remove these excludes 
> if your code relies on other                           versions of these 
> dependencies.                           -->                           
> <exclude>log4j:log4j</exclude>                           
> <exclude>org.scala-lang:scala-library</exclude>                           
> <exclude>org.scala-lang:scala-compiler</exclude>                           
> <exclude>org.scala-lang:scala-reflect</exclude>                           
> <exclude>com.data-artisans:flakka-actor_*</exclude>                           
> <exclude>com.data-artisans:flakka-remote_*</exclude>                          
>  <exclude>com.data-artisans:flakka-slf4j_*</exclude>                          
>  <exclude>io.netty:netty-all</exclude>                           
> <exclude>io.netty:netty</exclude>                           
> <exclude>commons-fileupload:commons-fileupload</exclude>                      
>      <exclude>org.apache.avro:avro</exclude>                           
> <exclude>commons-collections:commons-collections</exclude>                    
>        <exclude>org.codehaus.jackson:jackson-core-asl</exclude>               
>             <exclude>org.codehaus.jackson:jackson-mapper-asl</exclude>        
>                    <exclude>com.thoughtworks.paranamer:paranamer</exclude>    
>                        <exclude>org.xerial.snappy:snappy-java</exclude>       
>                     <exclude>org.apache.commons:commons-compress</exclude>    
>                        <exclude>org.tukaani:xz</exclude>                      
>      <exclude>com.esotericsoftware.kryo:kryo</exclude>                        
>    <exclude>com.esotericsoftware.minlog:minlog</exclude>                      
>      <exclude>org.objenesis:objenesis</exclude>                           
> <exclude>com.twitter:chill_*</exclude>                           
> <exclude>com.twitter:chill-java</exclude>                           
> <exclude>commons-lang:commons-lang</exclude>                           
> <exclude>junit:junit</exclude>                           
> <exclude>org.apache.commons:commons-lang3</exclude>                           
> <exclude>org.slf4j:slf4j-api</exclude>                           
> <exclude>org.slf4j:slf4j-log4j12</exclude>                           
> <exclude>log4j:log4j</exclude>                           
> <exclude>org.apache.commons:commons-math</exclude>                           
> <exclude>org.apache.sling:org.apache.sling.commons.json</exclude>             
>               <exclude>commons-logging:commons-logging</exclude>              
>              <exclude>commons-codec:commons-codec</exclude>                   
>         <exclude>com.fasterxml.jackson.core:jackson-core</exclude>            
>                <exclude>com.fasterxml.jackson.core:jackson-databind</exclude> 
>                           
> <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>             
>               <exclude>stax:stax-api</exclude>                           
> <exclude>com.typesafe:config</exclude>                           
> <exclude>org.uncommons.maths:uncommons-maths</exclude>                        
>    <exclude>com.github.scopt:scopt_*</exclude>                           
> <exclude>commons-io:commons-io</exclude>                           
> <exclude>commons-cli:commons-cli</exclude>                        </excludes> 
>                     </artifactSet>                     <filters>              
>           <filter>                           
> <artifact>org.apache.flink:*</artifact>                           <excludes>  
>                             <!-- exclude shaded google but include shaded 
> curator -->                              
> <exclude>org/apache/flink/shaded/com/**</exclude>                             
>  <exclude>web-docs/**</exclude>                           </excludes>         
>                </filter>                        <filter>                      
>      <artifact>*:*</artifact>                           <excludes>            
>                   <exclude>META-INF/*.SF</exclude>                            
>   <exclude>META-INF/*.DSA</exclude>                              
> <exclude>META-INF/*.RSA</exclude>                           </excludes>       
>                  </filter>                     </filters>                     
> <createDependencyReducedPom>false</createDependencyReducedPom>                
>   </configuration>               </execution>            </executions>        
>  </plugin>         <plugin>            
> <groupId>org.apache.maven.plugins</groupId>            
> <artifactId>maven-compiler-plugin</artifactId>            
> <version>3.1</version>            <configuration>               
> <source>1.8</source>               <target>1.8</target>            
> </configuration>         </plugin>            <plugin>                
> <groupId>org.apache.avro</groupId>                
> <artifactId>avro-maven-plugin</artifactId>                
> <version>1.8.1</version>                <executions>                    
> <execution>                        <phase>generate-sources</phase>            
>             <goals>                            <goal>schema</goal>            
>             </goals>                        <configuration>                   
>          <stringType>String</stringType>                            
> <fieldVisibility>PRIVATE</fieldVisibility>                            
> <sourceDirectory>${project.basedir}/src/main/schema/</sourceDirectory>        
>                     
> <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>          
>               </configuration>                    </execution>                
> </executions>            </plugin>            <plugin>                
> <groupId>org.apache.maven.plugins</groupId>                
> <artifactId>maven-compiler-plugin</artifactId>                <configuration> 
>                    <source>1.8</source>                    
> <target>1.8</target>                </configuration>            </plugin>     
>  </plugins>         </build></project>
>
>
> ---------------------------------------------
>
>
> On Sun, Feb 12, 2017 at 1:56 AM, Robert Metzger <[email protected]>
> wrote:
>
>> Hi Nico,
>> The cassandra connector should be available on Maven central:
>> http://search.maven.org/#artifactdetails%7Corg.apac
>> he.flink%7Cflink-connector-cassandra_2.10%7C1.2.0%7Cjar
>>
>> Potentially, the issue you've mentioned is due to some shading issue. Is
>> the "com/codahale/metrics/Metric" class in your user code jar?
>>
>> On Thu, Feb 9, 2017 at 2:56 PM, Nico < <[email protected]>
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> I would like to upgrade to the new stable version 1.2 - but i get an
>>> ClassNotFound exception when i start the application.
>>>
>>> Caused by: java.lang.NoClassDefFoundError: com/codahale/metrics/Metric
>>>     at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1367)
>>>     at com.datastax.driver.core.Cluster.init(Cluster.java:162)
>>>     at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:333)
>>>     at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:308)
>>>     at com.datastax.driver.core.Cluster.connect(Cluster.java:250)
>>>     at org.apache.flink.streaming.connectors.cassandra.CassandraSin
>>> kBase.open(CassandraSinkBase.java:67)
>>>     at org.apache.flink.streaming.connectors.cassandra.CassandraTup
>>> leSink.open(CassandraTupleSink.java:42)
>>>     at org.apache.flink.api.common.functions.util.FunctionUtils.ope
>>> nFunction(FunctionUtils.java:36)
>>>     at org.apache.flink.streaming.api.operators.AbstractUdfStreamOp
>>> erator.open(AbstractUdfStreamOperator.java:112)
>>>     at org.apache.flink.streaming.runtime.tasks.StreamTask.openAllO
>>> perators(StreamTask.java:386)
>>>     at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(S
>>> treamTask.java:262)
>>>     at org.apache.flink.runtime.taskmanager.Task.run(Task.java:655)
>>>     at java.lang.Thread.run(Thread.java:745)
>>>
>>>
>>> So I think the cassandra connector is the reason for it. Moreover, i
>>> don't see a version 1.2 in the maven repository for the connector as
>>> mentioned in the doc.
>>>
>>> <dependency>
>>>   <groupId>org.apache.flink</groupId>
>>>   <artifactId>flink-connector-cassandra_2.10</artifactId>
>>>   <version>1.2.0</version>
>>> </dependency>
>>>
>>> Is there a plan to release a new version?
>>>
>>> Best,
>>> Nico
>>>
>>
>>
>
>

Reply via email to