Java.lang.IncompatibleClassChangeError
Incompatible class change error. This exception is thrown when an incompatible change is made to the class definition on which the method being executed depends. This error is easily thrown when you modify the declaration definition for some classes in your app without recompiling the entire application.
"Error Message"
[ERROR] Terminal initialization failed; Falling back to unsupported
Java.lang.IncompatibleClassChangeError:Found class JLine. Terminal, but interface was expected
At JLine. Terminalfactory.create (terminalfactory.java:101)
At JLine. Terminalfactory.get (terminalfactory.java:158)
At Jline.console.consolereader.<init> (consolereader.java:229)
At Jline.console.consolereader.<init> (consolereader.java:221)
At Jline.console.consolereader.<init> (consolereader.java:209)
At Org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader (clidriver.java:787)
At Org.apache.hadoop.hive.cli.CliDriver.executeDriver (clidriver.java:721)
At Org.apache.hadoop.hive.cli.CliDriver.run (clidriver.java:681)
At Org.apache.hadoop.hive.cli.CliDriver.main (clidriver.java:621)
At Sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
At Sun.reflect.NativeMethodAccessorImpl.invoke (nativemethodaccessorimpl.java:57)
At Sun.reflect.DelegatingMethodAccessorImpl.invoke (delegatingmethodaccessorimpl.java:43)
At Java.lang.reflect.Method.invoke (method.java:606)
At Org.apache.hadoop.util.RunJar.run (runjar.java:221)
At Org.apache.hadoop.util.RunJar.main (runjar.java:136)
Exception in thread "main" Java.lang.IncompatibleClassChangeError:Found class JLine. Terminal, but interface was expected
At Jline.console.consolereader.<init> (consolereader.java:230)
At Jline.console.consolereader.<init> (consolereader.java:221)
At Jline.console.consolereader.<init> (consolereader.java:209)
At Org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader (clidriver.java:787)
At Org.apache.hadoop.hive.cli.CliDriver.executeDriver (clidriver.java:721)
At Org.apache.hadoop.hive.cli.CliDriver.run (clidriver.java:681)
At Org.apache.hadoop.hive.cli.CliDriver.main (clidriver.java:621)
At Sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
At Sun.reflect.NativeMethodAccessorImpl.invoke (nativemethodaccessorimpl.java:57)
At Sun.reflect.DelegatingMethodAccessorImpl.invoke (delegatingmethodaccessorimpl.java:43)
At Java.lang.reflect.Method.invoke (method.java:606)
At Org.apache.hadoop.util.RunJar.run (runjar.java:221)
At Org.apache.hadoop.util.RunJar.main (runjar.java:136)
[Email protected]:~$
"Solution"
Cause: The JLine version in yarn is too low.
Copy the JLine package from the ${hive_home}/lib directory to the ${hadoop_home}/share/hadoop/yarn/lib directory and start hive.
Workaround: Replace the jline in Hive-lib with the Yarn-lib directory:
CP $HIVE _home/lib/jline-2.12.jar $HADOOP _home/share/hadoop/yarn/lib/
Rm-f $HADOOP _home/share/hadoop/yarn/lib/jline-0.9.94.jar
Problem solving
hadoop2.6.0+hive1.2 Start Error Java.lang.IncompatibleClassChangeError