Scala REPL输入无回显问题求助
我之前在Ubuntu 18.04使用sbt 1.x版本时碰到过几乎一模一样的问题!当时折腾了好几种方法,最后顺利解决了,给你列几个可行的排查方向:
检查终端echo状态:有时候终端的echo功能会被意外关闭,导致输入看不到回显。先在终端执行:
stty echo然后重新启动sbt并进入REPL,看看是否恢复正常。如果是这个问题,重启终端后可能需要再次执行该命令,或者将其添加到shell配置文件中(比如
~/.bashrc)。强制使用JLine 2:sbt 1.x默认采用JLine 3,但Ubuntu 18.04的终端环境和JLine 3可能存在兼容性问题,这是导致无回显的常见原因。启动sbt时指定参数强制切换到JLine 2:
sbt -Dsbt.jline=2进入REPL后测试输入是否有回显,我当时就是用这个方法解决的问题。
验证Scala与sbt的版本兼容性:sbt 1.15建议搭配Scala 2.12.x或2.13.x版本使用,如果你的Scala版本过旧或过新,可能引发兼容性问题。可以在sbt交互模式下执行
scalaVersion查看当前版本,或者直接指定版本启动REPL:sbt "scala 2.13.8"重置终端TERM环境变量:异常的TERM设置也可能导致REPL无回显。先在终端执行:
export TERM=xterm再启动sbt和REPL测试。如果有效,可以将该命令添加到
~/.bashrc或~/.zshrc(根据你使用的shell)中永久生效。单独启动Scala REPL排查:如果以上方法都无效,尝试跳过sbt直接启动Scala REPL。先安装独立的Scala二进制包,然后执行
scala命令启动REPL。如果单独启动正常,说明问题出在sbt配置上,可以尝试删除sbt插件目录:rm -rf ~/.sbt/1.0/plugins之后重新启动sbt测试。
内容的提问来源于stack exchange,提问作者peidaqi

