Scala REPL 输入无回显

16

最近我的 Scala REPL 遇到了一个极为奇怪的问题,就是在终端中无法显示任何输入。

已尝试删除 ~/.sbt,但并未解决问题。我使用的操作系统是 Ubuntu 18.04,sbt 版本为 1.15。

有人遇到过类似的问题吗?


1
大约在上周左右,几乎完全相同的问题被提出(现在找不到了),但至少看起来你不是唯一遇到这个问题的人。谷歌搜索“scala repl does not show input”会得到一些结果,也许这里这里这里有用? - Andrey Tyukin
2
结果证明这是与Scala 2.11.1有关的问题。我的工作站上有两个Scala版本,而默认使用较旧的版本。在我将所有内容更新到2.12.6之后,问题得到了解决。 - peidaqi
我认为如果您将其发布为自己的答案,并最终将其标记为“社区wiki”,仍然是很好的。希望有些东西可以重定向到重复内容。 - Andrey Tyukin
3个回答

18

升级到Ubuntu 18.04后遇到了同样的问题。似乎包括2.11.12在内的某些Scala版本不兼容。我成功地在版本2.11.8上使REPL正常工作。

要获取该版本,请使用以下命令:

$ sudo apt-get remove scala-library scala
$ sudo wget www.scala-lang.org/files/archive/scala-2.11.8.deb
$ sudo dpkg -i scala-2.11.8.deb

1
这个方法在我使用sudo apt upgrade之前是有效的,但是在那之后问题又出现了。 - James Whiteley
对我来说起作用了。然而,Loki 的另一个答案似乎是更好的长期解决方案。 - Michel Lemay

13
这似乎是由JLine2使用JDK9+构建,但在JDK8上使用而引起的问题。如果您使用的是bionic,请尝试使用这个jline2 PPA:https://launchpad.net/~lokkju/+archive/ubuntu/java-compat/
(或者只需通过dpkg下载和安装https://launchpad.net/~lokkju/+archive/ubuntu/java-compat/+build/16458066/+files/libjline2-java_2.14.6-1ubuntu1~bionicppa1_all.deb
您可以通过运行scala -Ydebug来验证jline2是否存在问题,并查找ByteBuffer类未找到错误。
我还提交了一些错误报告,希望在未来解决这个问题。

1
对我来说,激活ppa后需要执行 sudo apt install libjline2-java 命令。 - user unknown

5

在升级到Ubuntu 18.04后,Scala 2.11.1存在一些兼容性问题。在更新Scala/sbt至最新版本后,所有功能都可以正常使用。


为了做到这一点,我需要前往Scala安装页面的“已归档”部分,下载并安装v2.13 .deb软件包以进行升级。 - joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接