2010-12-17 10 views
6

Ich benutze Cygwin 1.77 auf Windows Vista. Ich habe Probleme mit der Ausgabe von in der Shell. Einige relevante Umwelt vars:Zwei Probleme mit sbt in cygwin/Vista

TERM=cygwin 
CYGWIN=server 
LANG=C.UTF-8 

(1) Wenn ich sbt test geben die Schale eine Menge nicht druckbare Zeichen enthält:

alt text

Wie kann ich dieses Problem beheben?

Mein sbt Shell-Skript sieht wie folgt aus:

dir=`dirname $0` 
stty -icanon min 1 -echo > /dev/null 2>&1 
java -Djline.terminal=jline.UnixTerminal -Xmx512M -jar 
    `cygpath -w $dir`/sbt-launch-0.7.4.jar "[email protected]" 
stty icanon echo > /dev/null 2>&1 

(2) Der sbt Befehl nicht die scalatest jar finden & Ich weiß nicht, wie sie konfigurieren es über Efeu zum Download bereit. Es funktioniert, wenn ich das Glas in den Ordner lib fallen lasse.

Antwort

6

Zu 1):

Die Art und Weise der Cygwin-Konsole funktioniert, ist, dass es ein Teil der Cygwin DLL ist, die Unix-Terminal-Steuersequenzen zu Windows-Konsole-API-Aufrufen abbildet. Da diese Terminal-Emulation Teil der Cygwin-DLL ist, steht sie nicht für Nicht-Cygwin-Programme wie die Java-Laufzeit zur Verfügung. Stattdessen wird java direkt mit der Windows-Konsole kommunizieren, die Escape-Sequenzen nicht versteht. Daher erscheinen sie direkt auf dem Bildschirm.

Es gibt ein paar Möglichkeiten, wie Sie diese Adresse könnte:

  • Sagen Java/Scala die Windows-Konsole API-Sequenzen anstelle von Unix Steuerung zu verwenden. Ich denke, das Entfernen der -Djline.terminal=jline.UnixTerminal Option würde das tun.
  • Setzen Sie die Option CYGWIN=tty. Bei Programmen, die in der Cygwin-Konsole aufgerufen werden, ist ihre E/A-Einheit mit einem "Pseudo-Terminal" (pty) -Gerät verbunden, anstatt direkt mit dem Konsolenfenster verbunden zu sein. Dies macht die Terminal-Emulationsfunktionen für Nicht-Cygwin-Programme verfügbar, bedeutet jedoch, dass Programme, die die Windows-Konsolen-API verwenden, nicht mehr ordnungsgemäß funktionieren.
  • Verwenden Sie einen der anderen Terminal-Emulatoren von Cygwin: mintty, xterm, rxvt (-unicode). Diese bieten eine bessere Terminalemulation und vernünftigere Benutzeroberflächen als die Standardkonsole, allerdings auf Kosten von Programmen, die die Windows-Konsolen-API verwenden.

(Btw, die CYGWIN=server Option ist veraltet, das Merkmal, dass es aktiviert ist immer auf jeden Fall ist.)

+0

diese Gelöst von mintty läuft –