hadoop2.6.0+hive1.2启动报错java.lang.IncompatibleClassChangeError
2015-10-25 22:18
246 查看
java.lang.IncompatibleClassChangeError
不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。【报错信息】
[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)
stack@op4:~$
【解决办法】
原因:YARN中的jline版本过低。
把${hive_home}/lib目录的jline包copy到${hadoop_home}/share/hadoop/yarn/lib目录下,启动hive。
解决:将hive-lib中的jline替换到yarn-lib目录中:
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
问题解决
相关文章推荐
- java静态代理与动态代理的区别
- 01 筛选法求素数
- java之log4j的配置
- java通过JDBC链接SQLServer2012
- 如何使用eclipse新建并编译、运行Java程序
- java中Date与String的相互转化
- java位运算基础与实例
- JAVA中int、String的类型转换
- 深入入门正则表达式(java) - 命名捕获
- Java web项目开发需要掌握哪些技术?
- Java代码优化(长期更新)
- Java多线程<1>
- 【知识点整理(java)】Java Thread简单使用注意点汇总(四)
- Java应用程序项目的打包与发行
- JAVA的异常机制
- struts标签库中ognl表达式获取Action中对象的原理
- SimpleJdbc: 用于简化数据库操作的Java库
- Struts2基于XML配置文件实现输入校验
- JAVA课后作业
- 医药采购系统的添加用户模块