vim /etc/profile.d/pig_1582816803489.log ERROR 2998: Unhandled internal error. jline.Terminal.getTerminal ()Ljline/Terminal; java.lang.NoSuchMethodError: jline.Terminal.getTerminal()Ljline/Terminal; at jline.ConsoleReader. <init>(ConsoleReader.java:174) at jline.ConsoleReader. 执行删除命令 rm -rf jline-2.11.jar 删除完,重新启动Pig的命令行shell pig -x local ? 看到左下角出现grunt的时候,我就知道启动成功了。
at jline.TerminalFactory.get(TerminalFactory.java:158) 8 at jline.console.ConsoleReader. <init>(ConsoleReader.java:229) 9 at jline.console.ConsoleReader. <init>(ConsoleReader.java:221) 10 at jline.console.ConsoleReader. --hive这个jar包的版本--> [root@master lib]# ll jline-2.12.jar -rw-rw-r--. 1 root root 213854 Apr 29 2015 jline 开始学习hive. 1 [root@master lib]# ll jline-2.12.jar 2 -rw-rw-r--. 1 root root 213854 Apr 29 2015 jline
, but interface was expected at jline.TerminalFactory.create(TerminalFactory.java:101) at jline.TerminalFactory.get(TerminalFactory.java:158) at org.apache.hive.beeline.BeeLineOpts ) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 二、异常原因 jar版本包冲突 Hadoop lib 下已经存在了 jline 0.9x ,但是在hive中将Jline升级到了Jline2。 如上图:将hive的新版jline,替换hadoop的老版本即可。
启动程序,会报如下异常 [main]ERROR org.apache.pig.Main -ERROR 2998:Unhandled internal error.Found interface jline.Terminal ,but class was expected 原因是由于jline这个包和hadoop的yarn/lib下面的jline的包不一致造成的。 cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started里面的解释 解决方法: 删掉hadoop的yarn/lib下的那个jline 版本较高的包,将pig/lib下的jline-1.0.jar包拷贝到yarn/lib下,然后 重新执行pig命令,可正常启动。
0|System Bundle (6.0.1)|6.0.1 1|Active | 1|jansi (1.17.1)|1.17.1 2|Active | 1|JLine Active | 1|Apache Felix Gogo Command (1.0.2)|1.0.2 5|Active | 1|Apache Felix Gogo JLine 0|System Bundle (6.0.1)|6.0.1 1|Active | 1|jansi (1.17.1)|1.17.1 2|Active | 1|JLine Active | 1|Apache Felix Gogo Command (1.0.2)|1.0.2 5|Active | 1|Apache Felix Gogo JLine 0|System Bundle (6.0.1)|6.0.1 1|Active | 1|jansi (1.17.1)|1.17.1 2|Active | 1|JLine
name> <value>thrift://hadoop02:9083</value> </property> </configuration> (6) 保证hadoop集群中的jline jar包和所有hive节点的 jline jar包版本保持一致(高版本替换低版本) hadoop的jline jar包存放位置:HADOOP_HOME/share/hadoop/yarn/lib/下 其中的jline包为:jline-0.9.94.jar(hadoop-2.6.5) hive的jline jar包存放位置:HIVE_HOME/lib/下 其中的jline包为:jline-2.12 .jar(hive-1.2.1) 删除hadoop的jline包,把hive的jline包放进去 (7) hive服务端初始化元数据(必须保证mysql服务正常启动,且允许远程权限) [hadoop@
<value>root</value> </property> </configuration> (4) 把JDBC驱动包放到HIVE_HOME/lib目录下 (5) 保证hadoop的jline jar包和hive的 jline jar包版本保持一致(高版本替换低版本) hadoop的jline jar包存放位置:HADOOP_HOME/share/hadoop/yarn/lib/下 其中的 jline包为:jline-0.9.94.jar(hadoop-2.6.5) hive的jline jar包存放位置:HIVE_HOME/lib/下 其中的jline包为:jline-2.12.jar (hive-1.2.1) 删除hadoop的jline包,把hive的jline包放进去 (6) 初始化元数据(必须保证mysql服务正常启动,且允许远程连接) [hadoop@hadoop02 conf
04 使用JLine库进行更高级的命令行交互 JLine是一个流行的Java库,用于提供丰富的命令行界面和更高级的输入处理功能。它支持历史记录、自动补全等特性。 代码案例(需要添加JLine依赖): 首先,您需要将JLine库添加到项目的依赖中。 如果您使用Maven,可以在pom.xml中添加以下依赖: <dependency> <groupId>org.jline</groupId> <artifactId>jline</artifactId import org.jline.reader.LineReader; import org.jline.reader.LineReaderBuilder; import org.jline.terminal.Terminal 对于需要更高级功能的程序,您可能会考虑使用Console类或第三方库,如JLine。
at jline.TerminalFactory.get(TerminalFactory.java:158) 14 at jline.console.ConsoleReader. <init>(ConsoleReader.java:229) 15 at jline.console.ConsoleReader. <init>(ConsoleReader.java:221) 16 at jline.console.ConsoleReader. , but interface was expected 29 at jline.console.ConsoleReader. <init>(ConsoleReader.java:230) 30 at jline.console.ConsoleReader.
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.
<value>123456</value> </property> </configuration> 客户端配置文件(由于客户端需要和Hadoop通信,所以需要更改Hadoop中jline 从hive的lib包中拷贝到Hadoop中lib位置为/opt/soft/hadoop-2.6.5/share/hadoop/yarn/lib) 留一个高版本的jline jar包!! <? initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.Terminal , but interface was expected at jline.TerminalFactory.create(TerminalFactory.java:101) 错误的原因: Hadoop jline版本和hive的jline不一致!!!
/hive/warehouse #赋予文件夹权限 hadoop fs -chmod g+w /tmp hadoop fs -chmod g+w /user/hive/warehouse 将hive下的jline -2.12.jar 复制替换hadoop中的jline-2.12.jar cp /usr/local/src/hive/lib/jline-2.12.jar /usr/local/src/hadoop/ share/hadoop/yarn/lib/ rm jline-2.12.jar -rf 否则启动hive会报如下错误 Exception in thread "main" java.lang.IncompatibleClassChangeError : Found class jline.Termina hive启动并测试 启动hive并测试查询 #在配了环境变量bin的情况下才能使用 hive 查看数据库 hive> show databases
> consoleC = Class.forName("jline.console.ConsoleReader"); Class<? = true; } catch (NoSuchMethodException e) { LOG.debug("Unable to start jline true; } catch (InvocationTargetException e) { LOG.debug("Unable to start jline = true; } catch (IllegalAccessException e) { LOG.debug("Unable to start jline = true; } catch (InstantiationException e) { LOG.debug("Unable to start jline
. : 所有库下的所有表 %:任何IP地址或主机都可以连接 Jline包版本不一致的问题:Hive使用的Jline(命令行解析包)版本高于Hadoop的版本。 需要拷贝$HIVE_HOME/lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/ lib/jline-0.9.94.jar 4.bin/hive报如下错误: Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException
JLine support is enabled [zk: localhost:2181(CONNECTING) 0] WATCHER:: WatchedEvent state:SyncConnected 可以看到机器目录 其实这是JLine交互控制台,会开启一个和zookeeper服务器之间的session.另外,关于jline参考http://ningg.top/zookeeper-getting-started
可以通过Spring Shell提供的接口org.springframework.shell.jline.PromptProvider对该命令提示符进行定制。 // 通过实现接口org.springframework.shell.jline.PromptProvider定制命令提示符 import org.jline.utils.AttributedString ; import org.jline.utils.AttributedStyle; import org.springframework.shell.jline.PromptProvider; import
---> 软件包 java-1.7.0-openjdk.x86_64.1.1.7.0.261-2.6.22.2.el7_8 将被 删除 --> 正在处理依赖关系 java >= 1.5,它被软件包 jline .0.1.0-8.el7 将被 删除 --> 正在处理依赖关系 jline,它被软件包 rhino-1.7R5-1.el7.noarch 需要 --> 正在检查事务 ---> 软件包 rhino.noarch java-1.7.0-openjdk-headless x86_64 1:1.7.0.261-2.6.22.2.el7_8 @anaconda 95 M 为依赖而移除: jline 正在删除 : rhino-1.7R5-1.el7.noarch 1/4 正在删除 : jline 验证中 : rhino-1.7R5-1.el7.noarch 3/4 验证中 : jline
如图,可看到jline是在zookeeper中被间接引用的 1.2 用include参数 H:\下载\新建文件夹\yjg>mvn dependency:tree -Dincludes=jline [INFO esshop:esshop:war:0.0.1-SNAPSHOT [INFO] – org.apache.zookeeper:zookeeper:jar:3.3.3:compile [INFO] – jline :jline:jar:0.9.94:compile [INFO] ——————————————————— [INFO] BUILD SUCCESS [INFO] ———————————————————
8085quarkus.http.enable-compression=truequarkus.http.enable-decompression=true3.上传文件上传修改好的文件解压4.启动命令展开代码语言:TXTAI代码解释java-Dterminal.jline-Dterminal.ansi BitServerVMTemurin-21.0.9+10(build21.0.9+10-LTS,mixedmode,sharing)[16:36:36]container~java-Xms256m-Xmx512m-Dterminal.jline-Dterminal.ansi BitServerVMTemurin-21.0.9+10(build21.0.9+10-LTS,mixedmode,sharing)[16:36:58]container~java-Xms256m-Xmx512m-Dterminal.jline-Dterminal.ansi
/lib/jline-0.9.94.jar:/root/zk/zookeeper-3.4.6/bin/.. /lib/jline-0.9.94.jar:/root/zk/zookeeper-3.4.6.1/bin/.. /lib/jline-0.9.94.jar:/root/zk/zookeeper-3.4.6.2/bin/.. /lib/jline-0.9.94.jar:/root/zk/zookeeper-3.4.6/bin/.. ClientCnxn$SendThread@852] - Socket connection established to localhost/127.0.0.1:2180, initiating session JLine