SBT错误:";终端建设失败;退回到不受支持的状态……”;

SBT错误:";终端建设失败;退回到不受支持的状态……”;,sbt,Sbt,我今天遇到了一个SBT错误。最好使用sbt sbt version命令显示: 2017年5月29日运行: 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/e

我今天遇到了一个SBT错误。最好使用
sbt sbt version
命令显示:

2017年5月29日运行:

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
2017年6月1日运行:

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
eric@linux-x2vq:~$sbt sbt版本
Java HotSpot(TM)64位服务器VM警告:忽略选项
最大粒径=256M;支持在8.0中被删除
[错误]构造终端失败;回到无支撑状态
java.lang.NumberFormatException:对于输入字符串:“0x100”
位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
在java.lang.Integer.parseInt(Integer.java:580)处
位于java.lang.Integer.valueOf(Integer.java:766)
位于jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
位于jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:233)
在jline.UnixTerminal.(UnixTerminal.java:64)
在jline.UnixTerminal.(UnixTerminal.java:49)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于java.lang.Class.newInstance(Class.java:442)
位于jline.TerminalFactory.getFlavor(TerminalFactory.java:209)
在jline.TerminalFactory.create(TerminalFactory.java:100)
在jline.TerminalFactory.get(TerminalFactory.java:184)
在jline.TerminalFactory.get(TerminalFactory.java:190)
支持sbt.ConsoleLogger$.Ansis(ConsoleLogger.scala:123)
在sbt.ConsoleLogger$(ConsoleLogger.scala:117)
在sbt.ConsoleLogger$(ConsoleLogger.scala)时
在sbt.globalloging$.initial(globalloging.scala:43)
在sbt.StandardMain$.initialGloballing(Main.scala:64)
在sbt.StandardMain$.initialState(Main.scala:73)
在sbt.xMain.run(Main.scala:29)
在xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
在xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
在xsbt.boot.Launch$.run(Launch.scala:109)
在xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
在xsbt.boot.Launch$.Launch(Launch.scala:117)
在xsbt.boot.Launch$.apply(Launch.scala:18)
在xsbt.boot.boot$.runImpl处(boot.scala:41)
在xsbt.boot.boot$.main处(boot.scala:17)
位于xsbt.boot.boot.main(boot.scala)
[信息]将当前项目设置为eric(在生成文件中:/home/eric/)
[信息]0.13.13
我的SBT或Java设置都没有变化(据我所知)

关于什么可能导致这种情况,或者如何修复错误,有什么想法吗


谢谢大家!

我找到了导致此问题的包:
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的步骤:请参阅

我认为这个问题是在ncurses版本20170506中引入的,请参见:

我在SBT问题追踪器上提交了一个问题:


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

我也有同样的问题,尤其是当
术语
环境变量设置为
xterm-256color
时。将其设置为不同的值为我解决了这个问题,例如

export TERM=xterm-color

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

export TERM=xterm-color

正如@user3113045在conf文件中所说,sbt将起作用。在这种情况下,您的其他term命令仍将使用
xterm-256color
您可以将
export term=xterm color
添加到
/usr/share/sbt/bin/sbt
的顶部,因为
$HOME/.sbtconfig
已不推荐使用。

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

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


所以,ncurses确实发生了变化,相应的sbt部分是……我想。。。可能仅基于随机猜测的测试和观察/错误实施,而不是任何规范或RFC。(到目前为止,sbt是我所知道的唯一一个有ncurses问题的课程。)

如果您不能简单地升级sbt降级ncurses,您可以更改其他答案中提到的术语环境变量

琐碎的修复: 如果您的sbt脚本是一些bash脚本(很可能,除非您运行DOS.bat文件)

,则添加此解决方案就足够了:

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

我在使用内部使用sbt的activator时遇到了这个问题。 我正在使用Ubuntu,这个错误让我很沮丧。 我在跑步时就开始面对这个问题

$activator gen idea(根据intellij是传统的工具)

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


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

我不能写评论,因为我的分数太低,但是当我将
导出术语=xterm color
添加到我的
.zshrc
文件中时,user3113045的答案起了作用。这解决了我的问题(Linux用户):

  • 打开你的终端
  • 导航到项目目录
  • 在终端中键入“export TERM=xterm color”,不带引号
  • 按回车键

  • 就这些,然后你就可以开始了。

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

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


    我也有同样的问题。问题是,
    infocmp
    color#0x100
    有一个十六进制值,jline.UnixTerminal无法解析该值。该错误已经修复:感谢您的支持和您在github上的帖子。我在昨天的openSUSE Tumbleweed更新之后立即注意到了这个问题
    $ file /usr/bin/sbt
    /usr/bin/sbt: Bourne-Again shell script, ASCII text executable
    
    TERM="${TERM/xterm-256color/xterm-color}"
    
    #!/usr/bin/env bash
    export TERM=xterm-color
    set +e