SBT错误:“无法构建终端;回退到不支持的......”

时间:2017-06-01 21:31:10

标签: sbt

我今天遇到了与SBT的错误。最好用sbt sbt-version命令显示:

在5/29/17上运行:

eric@linux-x2vq:~$ sbt sbt-version
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option 
MaxPermSize=256M; support was removed in 8.0
[info] Set current project to eric (in build file:/home/eric/)
[info] 0.13.13

在6/1/17上运行:

eric@linux-x2vq:~$ sbt sbt-version
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option             
MaxPermSize=256M; support was removed in 8.0
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "0x100"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:233)
at jline.UnixTerminal.<init>(UnixTerminal.java:64)
at jline.UnixTerminal.<init>(UnixTerminal.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at jline.TerminalFactory.getFlavor(TerminalFactory.java:209)
at jline.TerminalFactory.create(TerminalFactory.java:100)
at jline.TerminalFactory.get(TerminalFactory.java:184)
at jline.TerminalFactory.get(TerminalFactory.java:190)
at sbt.ConsoleLogger$.ansiSupported(ConsoleLogger.scala:123)
at sbt.ConsoleLogger$.<init>(ConsoleLogger.scala:117)
at sbt.ConsoleLogger$.<clinit>(ConsoleLogger.scala)
at sbt.GlobalLogging$.initial(GlobalLogging.scala:43)
at sbt.StandardMain$.initialGlobalLogging(Main.scala:64)
at sbt.StandardMain$.initialState(Main.scala:73)
at sbt.xMain.run(Main.scala:29)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)

[info] Set current project to eric (in build file:/home/eric/)
[info] 0.13.13

对我的SBT或Java设置没有任何改变(我知道)。

关于可能导致此错误或如何解决错误的任何想法?

谢谢!

10 个答案:

答案 0 :(得分:136)

我遇到了同样的问题,尤其是当TERM环境变量设置为xterm-256color时。将它设置为不同的值可以解决我的问题,例如

export TERM=xterm-color

答案 1 :(得分:52)

我找到导致此问题的软件包:ncurses。我将ncurses降级为版本ncurses-6.0+20170429-1(我正在使用Arch Linux)并且SBT启动就好了。

Arch Linux的步骤:

cd /var/cache/pacman/pkg
sudo pacman -U ncurses-6.0+20170429-1-x86_64.pkg.tar.xz # or some other older version

Mac的步骤:请参阅https://github.com/jline/jline2/issues/281

我认为此问题是在ncurses版本20170506中引入的,请参阅:http://invisible-island.net/ncurses/NEWS.html#index-t20170506

+ modify tic/infocmp display of numeric values to use hexadecimal when
      they are "close" to a power of two, making the result more readable.

我在SBT问题跟踪器上提出了一个问题:https://github.com/sbt/sbt/issues/3240

编辑:SBT版本0.13.16包含此问题的修复程序。

答案 2 :(得分:21)

您可以将export TERM=xterm-color添加到/usr/share/sbt/bin/sbt的顶部,因为不推荐使用$HOME/.sbtconfig

答案 3 :(得分:17)

sbt命令只是一个脚本。它在一开始就加载$HOME/.sbtconfig,所以只需加上

export TERM=xterm-color

正如@ user3113045在conf文件中说的,sbt会起作用。在这种情况下,您的其他术语命令仍将使用xterm-256color

答案 4 :(得分:6)

一年过去了...现在发生在我身上。


因此, ncurses 确实发生了变化,并且相应的 sbt 部分是...我想...可能仅基于随机猜测的测试和观察/错误以及没有任何规范或RFC。 (到目前为止,sbt是我所知道的唯一具有此ncurses问题的程序。)

如果您不能简单地升级sbt 降级ncurses ,则可以按照其他答案中所述更改TERM环境变量。

重要修复:

如果您的sbt脚本是某些bash脚本(除非您运行DOS的.bat文件,否则很有可能)

$ file /usr/bin/sbt
/usr/bin/sbt: Bourne-Again shell script, ASCII text executable

,那么添加此替代方法可能就足够了:

TERM="${TERM/xterm-256color/xterm-color}"

答案 5 :(得分:3)

这解决了我的问题(Linux用户):

  1. 打开您的终端机
  2. 导航到您的项目目录
  3. 在您的终端中输入“ export TERM = xterm-color”,不带引号
  4. 打回车

仅此而已,然后您就可以出发了。

答案 6 :(得分:2)

如果可以,请将build.properties中的sbt版本更改为更高版本。 13.16为我工作。

答案 7 :(得分:1)

我的分数太低,因此我无法发表评论,但是当我在export TERM=xterm-color文件中添加.zshrc时,user3113045的答案起作用了

答案 8 :(得分:0)

当我使用内部使用sbt的激活器时,我遇到了这个问题。 我正在使用Ubuntu,并且此错误使我感到沮丧。 跑步

时,我开始面对这个问题

$激活器gen-idea(根据intellij的工具为旧版)

此后,我尝试删除此工具生成的所有缓存。

我从主文件夹中删除了.ivy和.sbt目录,并运行了activator cleanFiles编译命令,从而解决了我的问题。

答案 9 :(得分:0)

对于Ubuntu 20.04用户,请打开您的终端并运行下面的CMD

  • 转到此“ / usr / share / sbt / bin”目录($ cd / usr / share / sbt / bin)
  • 授予编辑文件的权限($ sudo chmod -R 777 sbt)
  • 打开此目录中的 sbt 文本文件($ nano sbt)
  • 在顶部添加此“ export TERM = xterm-color” cmd并保存(Ctrl + X)

例如:-

#!/usr/bin/env bash
export TERM=xterm-color
set +e