Five Stars

Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

I am working on BigData project using Talend, So far it was working fine but, from last two days i am getting below error. 
when tHiveConnection tries to connect with hive. 
Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)
at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:93)
at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at hdfs_talend.u_loadtohive_1_0.U_LoadToHive.tHiveConnection_1Process(U_LoadToHive.java:6101)

I have done following things to over cone this issue. 
1. Created new project with new workspace ( last tie we have solve this using this technique)
2. Replace all the jars with last success full run jars. 
I am thing problem occurs due to auto update, not sure any one has suggestion here I don`t see any thread regarding such issue. 
Talend BigData version 5.6.1.20141207_1530
10 REPLIES
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

I guess its the problem with the jar file. Try with the latest jar and see if it helps out or else delete the component from the job and add it again from palette
Five Stars

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

I tried both of the things, but no luck. I am debugging, and I think there is conflict over cloud-era hive implementation and Apache hive, due to which this error occurs. Give more specific reason soon. 
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

I cant think of any other reason apart from missing library files or duplicate library files from the classpath
refer this to have some insight on the error http: //stackoverflow.com/questions/1980452/what-causes-java-lang-incompatibleclasschangeerror/1980474#1980474
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

http: //stackoverflow.com/questions/23332022/hive-0-12-0-incompatibleclasschangeerror
http: //stackoverflow.com/questions/10328419/error-while-executing-program-with-hive-jdbc
Five Stars

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

I agree on your second thought that we may have duplicate libraries in classpath. and yes I do have that but if removes some of the new versions hive then my job start complaining for missing jars or references. Let me explain in better.   
I am having two jobs 1. for Cloudera distribution 2. Apache distribution.
now am using both the jobs( 1 and 2) in single job (3) which takes certain parameter to execute appropriate distribution. due to which I am getting this problem. 
If I remove Cloudera then it works fine but I need both of them in single job. to run either job I need complete set of jar for each of distribution and some or other has conflict with each other. 
Hope you got the point. 
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

Instead of using both the distribution in single job, can you build a job with cloudera distribution and use a trunjob and that will inturn refer the apache distribution job. In that way atleast you dont have any conflicts while running the job as it will be completely referenced as a separate job. or else post the screen of your job?
Five Stars

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

Exactly I am doing, and still this error is there, because it is part of 3rd job it takes all the jars in single build which may cause this issue. what you say?
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

Agree with you!! That could cause the jar conflicts 
Five Stars

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

but question is how to assign specific jars to respective jobs? is there way to do that? or building separate jobs is the last option?
One Star

Re: Exception in thread "main" java.lang.IncompatibleClassChangeError: Imp

By Default depending upon the components used in the job,respective jar's is picked up automatically. So the only option is to have separate jobs