web-dev-qa-db-fra.com

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

J'ai rencontré une erreur avec SBT aujourd'hui. Cela peut être mieux montré avec le sbt sbt-version commande:

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 mon SBT ou de l'installation Java.

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

Je vous remercie!

65
ericky

J'ai trouvé le paquet à l'origine de ce problème: ncurses. J'ai rétrogradé ncurses vers la version ncurses-6.0+20170429-1 (J'utilise Arch Linux) et SBT démarre correctement.

É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

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

Je pense que ce problème a été introduit avec la version 20170506 de ncurses, 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é un problème sur l'outil de suivi des problèmes SBT: https://github.com/sbt/sbt/issues/324

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

53
amuttsch

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

export TERM=xterm-color
148
user3113045

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

22
Mikhail Chugunkov

La commande sbt n'est qu'un script. Il charge $HOME/.sbtconfig au tout début, alors venez 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.

18
ninjapapa

Un an a passé ... maintenant cela m'est arrivé.


Donc, ncurses a changé, et la partie sbt correspondante était ... Je suppose ... probablement uniquement mise en œuvre sur la base de tests aléatoires et d'observations/bugs et non de spécifications ni RFC. (Jusqu'à présent, sbt est le seul programme que je connaisse avec ce problème de ncurses.)

Si vous ne pouvez pas simplement pgrade sbt ni rétrograder ncurses, vous pouvez modifier la variable d'environnement TERM comme indiqué dans les autres réponses.

solution triviale:

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

$ 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}"
6
comonad

Si vous le pouvez, changez la version de sbt dans build.properties. 13.16 travaillent pour moi.

2
Majid Hosseini

Je ne peux pas écrire de commentaire car mon score est trop bas, mais la réponse de user3113045 a fonctionné lorsque j'ai ajouté export TERM=xterm-color à mon .zshrc fichier

0
Patrick White

J'ai fait face à ce problème lorsque j'utilise un activateur qui utilise sbt en interne. J'utilise Ubuntu et cette erreur m'a frustré. J'ai commencé à faire face à ce problème quand j'ai couru

$ activator gen-idea (outil qui, selon intellij, est un héritage)

Après cela, j'ai essayé de supprimer tout le cache généré par cet outil.

J'ai supprimé les répertoires .ivy et .sbt de mon dossier personnel et exécuté la commande de compilation de l'activateur cleanFiles, qui a résolu mon problème.

0
zee