You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中HBase Shell按退格键后崩溃问题求助

解决HBase 1.2.4 Shell退格触发ArithmeticException(除以零)的问题

我之前也碰到过一模一样的问题——基于dajobe/hbase-docker构建的HBase 1.2.4容器里,刚打开HBase Shell按退格就直接崩溃,抛出ConsoleReader.java:1414:in 'backspace': java.lang.ArithmeticException: / by zero的错误。这本质是HBase 1.2.x依赖的旧版JLine(通常是2.11)在容器终端环境下的兼容性bug,终端列宽计算异常触发了除以零的逻辑错误。下面给你几个可行的解决方案:

方案1:临时设置终端环境变量(快速生效)

进入容器后,先设置TERM环境变量为容器终端能识别的类型,再启动HBase Shell:

# 进入容器后执行
export TERM=xterm-256color
hbase shell

这个方法能让JLine正确识别终端参数,避免列宽计算出错。

方案2:永久配置终端环境变量(一劳永逸)

如果不想每次进入容器都手动设置,可以修改容器的启动脚本或者Dockerfile,把TERM变量默认配置好:

  1. 打开容器启动脚本start-hbase.sh,在启动HBase的代码前添加:
    export TERM=xterm-256color
    
  2. 重新构建镜像并启动容器:
    docker build -t hbase-docker .
    ./start-hbase.sh
    

或者直接在Dockerfile里添加一行:

ENV TERM xterm-256color

之后构建的镜像会自动带上这个环境变量,无需每次手动设置。

方案3:升级JLine版本(彻底修复bug)

如果上面的方法都无效,可以升级HBase依赖的JLine版本到修复了该bug的2.14.6版本:

  1. 进入容器并切换到HBase的lib目录:
    docker exec -it hbase bash
    cd /opt/hbase/lib
    
  2. 删除旧的JLine jar包:
    rm jline-*.jar
    
  3. 下载修复后的版本:
    wget https://repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
    
  4. 退出并重启HBase Shell,退格功能就能正常使用了。

内容的提问来源于stack exchange,提问作者Saffik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:54