84 votes

Erreur SBT: "Échec de la construction du terminal; retour à une configuration non prise en charge ..."

J'ai rencontré une erreur avec SBT aujourd'hui. Il est préférable de l’afficher avec la commande sbt sbt-version :

Exécuter le 29/05/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
 

Cours le 01/06/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
 

Aucune modification (que je sache) de ma configuration SBT ou Java.

Des idées sur ce qui pourrait causer ceci ou comment corriger l'erreur?

Je vous remercie!

187voto

user3113045 Points 2146

J'ai eu le même problème, en particulier lorsque la variable d'environnement TERM est définie sur xterm-256color . La définition d'une valeur différente a résolu le problème pour moi, par exemple

 export TERM=xterm-color
 

56voto

Asfaloth Points 111

J'ai trouvé le package qui provoque ce problème: ncurses. J'ai rétrogradé ncurses version ncurses-6.0+20170429-1 (j'utilise Arch Linux) et SBT démarre très bien.

Les étapes pour 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

Les étapes pour Mac: voir https://github.com/jline/jline2/issues/281

Je pense que ce problème a été introduite avec ncurses version 20170506, voir: 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.

J'ai déposé une question sur le SBT issue tracker: https://github.com/sbt/sbt/issues/3240

Edit: SBT version 0.13.16 inclut le correctif pour ce problème.

24voto

Mikhail Chugunkov Points 328

Vous pouvez ajouter export TERM=xterm-color au sommet de /usr/share/sbt/bin/sbt car $HOME/.sbtconfig est obsolète.

22voto

ninjapapa Points 171

sbt n'est qu'un script. Il charge $HOME/.sbtconfig au tout début, alors il suffit de mettre

 export TERM=xterm-color
 

comme @ user3113045 l'a indiqué dans le fichier de configuration, sbt fonctionnera. Dans ce cas, vos autres commandes de termes utiliseront toujours xterm-256color .

7voto

comonad Points 1852

Un an passé... maintenant, il m'est arrivé.


Donc, ncurses qui a changé, et le sbt partie était ...je crois... peut-être seulement mis en œuvre en fonction aléatoire deviné, des tests et des observations/bugs et pas tout spec ni RFC. (Jusqu'à présent, sbt est le seul programme avec cette ncurses question, que je sache.)

Dans le cas où vous ne pouvez pas simplement mettre à niveau sbt ni rétrograder ncurses, vous pouvez modifier la variable d'environnement TERM comme mentionné dans les autres réponses.

trivial corrigé:

Si votre sbt script est un script bash (le plus probable, sauf si vous exécutez le DOS".les fichiers bat)

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

, alors il pourrait suffire d'ajouter cette solution de contournement:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X