SBT-Fehler: „Terminal konnte nicht erstellt werden. auf nicht unterstützte zurückgreifen ... "

77

Ich bin heute mit SBT auf einen FEHLER gestoßen. Es kann am besten mit dem sbt sbt-versionBefehl angezeigt werden :

Am 29.05.17 ausführen:

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

Am 01.06.17 ausführen:

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

Keine Änderungen (die ich kenne) an meinem SBT- oder Java-Setup.

Irgendwelche Ideen, was dies verursachen könnte oder wie der Fehler behoben werden kann?

Vielen Dank!

ericky
quelle
Ich habe das gleiche Problem. Das Problem ist, dass infocmpes einen Hex-Wert gibt, für color#0x100den jline.UnixTerminal nicht analysieren kann. Der Fehler wurde bereits behoben: github.com/jline/jline2/commit/…
amuttsch

Antworten:

54

Ich habe das Paket gefunden, das dieses Problem verursacht : ncurses. Ich habe ein Downgrade ncursesauf die Version durchgeführt ncurses-6.0+20170429-1(ich verwende Arch Linux) und SBT startet einwandfrei.

Schritte für 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

Schritte für Mac: Siehe https://github.com/jline/jline2/issues/281

Ich denke, dieses Problem wurde mit der ncurses-Version 20170506 eingeführt, siehe: 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.

Ich habe ein Problem im SBT Issue Tracker eingereicht: https://github.com/sbt/sbt/issues/3240

Bearbeiten: SBT Version 0.13.16 enthält die Lösung für dieses Problem.

amuttsch
quelle
2
Vielen Dank für diesen und Ihren Beitrag an Github. Ich habe das Problem sofort nach einem openSUSE Tumbleweed-Update gestern bemerkt. Flüche! Ich werde auf Entwicklungen achten. Geschätzt. :-)
ericky
Wie könnte ich das unter Ubuntu machen?
Rodrigocprates
Der richtige Weg, um all dies tatsächlich zu beheben, ist ein Upgrade der Scala von 2.11.X auf 2.13.X. Siehe: github.com/sbt/sbt/issues/3240#issuecomment-325899575 Die schuldige Bibliothek ist jline. : D
Manoel Vilela
178

Ich hatte das gleiche Problem, insbesondere wenn die TERMUmgebungsvariable auf eingestellt ist xterm-256color. Das Einstellen auf einen anderen Wert hat das Problem für mich behoben, z

export TERM=xterm-color
user3113045
quelle
2
funktioniert für mich, Arch User. Arch Kernel 4.11.3-1-ARCH, sbt Version 2.5.15 "Streamy"
CybeX
fügte dies oben in meinem sbt Launcher hinzu
Utgarda
2
Funktioniert auch bei mir, Arch Linux. Diese Zeile wurde meiner ~ / .bashrc-Datei hinzugefügt.
Victoria Stuart
Funktioniert für Macos. Ich benutze zsh als meine Shell.
Raynal Gobel
4
Funktioniert für mich unter Ubuntu 18.04
Mule
24

Sie können oben hinzufügen export TERM=xterm-color, /usr/share/sbt/bin/sbtweil $HOME/.sbtconfigveraltet ist.

Mikhail Chugunkov
quelle
2
Es /usr/share/sbt/bin/sbtist sehr wahrscheinlich, dass die Datei sbtvon einem Paketmanager als Teil des Pakets installiert wird . Alle Änderungen an dieser Datei werden möglicherweise entfernt, wenn das sbtPaket aktualisiert wird. Dies kann entweder für einen bestimmten Benutzer unsichtbar sein (wenn eine andere Person das sbtPaket aktualisiert ) oder in einem Moment der Vergesslichkeit überschrieben werden.
Taylor R
Nun, das wäre gut, weil es anscheinend in späteren Versionen behoben ist.
Luigi Plinge
21

sbtBefehl ist nur ein Skript. Es wird $HOME/.sbtconfigganz am Anfang geladen , also einfach gesagt

export TERM=xterm-color

Wie @ user3113045 in der conf-Datei sagte, wird sbt funktionieren. In diesem Fall werden Ihre anderen Termbefehle weiterhin verwendet xterm-256color.

Ninjapapa
quelle
1
Ich habe export TERM=xterm-colormeine eingegeben ~/.bashrcund es funktioniert gut.
ChikuMiku
Verwenden Sie zuerst which sbt, um den Ordner zu finden, in den die Zeile eingefügt werden muss /usr/local/opt/[email protected]/bin/sbt. Ich habe die Zeile
eingefügt
7

Ein Jahr verging ... jetzt ist es mir passiert.


Also, ncurses tat ändern und die entsprechenden sbt Teil war ... Ich denke , ... wahrscheinlich nur auf zufällige erraten Tests auf der Basis implementiert und Beobachtungen / Bugs und keine spec noch RFC. (Bisher ist sbt das einzige Programm mit diesem ncurses-Problem, das mir bekannt ist.)

Falls Sie sbt nicht einfach aktualisieren oder ncurses nicht herabstufen können , können Sie die Umgebungsvariable TERM wie in den anderen Antworten angegeben ändern.

triviale Lösung:

Wenn es sich bei Ihrem sbt-Skript um ein Bash-Skript handelt (höchstwahrscheinlich, es sei denn, Sie führen die .bat-Dateien von DOS aus).

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

Dann kann es ausreichen, diese Problemumgehung hinzuzufügen:

TERM="${TERM/xterm-256color/xterm-color}"
Comonad
quelle
2
Anstatt file /usr/bin/sbt, mögen Sie vielleicht nutzen , file -L `which sbt`um sicherzustellen , dass der SBT , die auf dem Benutzerpfad wird geprüft , und dass alle symbolischen Links gefolgt sind.
Taylor R
tatsächlich. Sie können auch ein anderes Skript als Wrapper hinzufügen und dieses in PATH einfügen, um das Original zu beschatten.
Comonad
3

Wenn Sie können, ändern Sie die sbt-Version in build.properties auf höher. 13.16 Arbeit für mich.

Majid Hosseini
quelle
3

Dies löste das Problem in meinem Fall (Linux-Benutzer):

  1. Öffnen Sie Ihr Terminal
  2. Navigieren Sie zu Ihrem Projektverzeichnis
  3. Geben Sie "export TERM = xterm-color" in Ihr Terminal ohne Anführungszeichen ein
  4. Drücke Enter

Das ist alles und dann können Sie loslegen.

keem sisi
quelle
Ich habe die Anweisung in meine .bashrc (Ubuntu) eingefügt. Hat perfekt funktioniert. Ich gehe davon aus, dass es auch in Fedora für mich funktionieren wird.
Wayneeusa
1

Ich kann keinen Kommentar schreiben, da meine Punktzahl zu niedrig ist, aber die Antwort von user3113045 hat funktioniert, als ich sie export TERM=xterm-colorzu meiner .zshrcDatei hinzugefügt habe

Patrick White
quelle
0

Ich habe dieses Problem festgestellt, als ich Activator verwende, der sbt intern verwendet. Ich benutze Ubuntu und dieser Fehler hat mich frustriert. Ich fing an, mich diesem Problem zu stellen, als ich lief

$ activator gen-idea (Werkzeug, das laut Intellij Vermächtnis ist)

Danach habe ich versucht, den gesamten Cache zu löschen, den dieses Tool generiert hat.

Ich habe die Verzeichnisse .ivy und .sbt aus meinem Home-Ordner gelöscht und den Aktivierungsbefehl cleanFiles compile ausgeführt, mit dem mein Problem behoben wurde.

zee
quelle
0

Öffnen Sie für Ubuntu 20.04-Benutzer Ihr Terminal und führen Sie die folgenden CMDs aus

  • Wechseln Sie in dieses Verzeichnis "/ usr / share / sbt / bin" ($ cd / usr / share / sbt / bin).
  • Geben Sie die Berechtigung zum Bearbeiten der Datei ($ sudo chmod -R 777 sbt).
  • Öffnen Sie die sbt- Textdatei in diesem Verzeichnis ($ nano sbt).
  • Fügen Sie dieses cmd "export TERM = xterm-color" oben hinzu und speichern Sie es (Strg + X).

Ex:-

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