2010-12-17 25 views
6

Używam cygwin 1.77 na Windows Vista. Mam problemy z wyjściem z sbt w powłoce. Niektóre istotne środowisko vars:Dwa problemy z sbt w cygwin/vista

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

(1) Po wpisaniu sbt test powłoka zawiera wiele znaków niedrukowalnych:

alt text

Jak mogę rozwiązać ten problem?

Moja SBT skrypt wygląda tak:

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) Komenda sbt nie można znaleźć scalatest słoik & nie wiem jak go skonfigurować, aby go pobrać poprzez bluszcz. Działa, jeśli upuszczę słoik do folderu lib.

Odpowiedz

6

Odnośnie 1):

Sposób konsola Cygwin działa to, że jest częścią DLL Cygwin, który mapuje Unix sekwencji sterujących zacisk do Windows wywołuje konsoli API. Ponieważ emulacja terminala jest częścią biblioteki DLL Cygwin, nie jest dostępna dla programów innych niż Cygwin, takich jak środowisko wykonawcze Java. Zamiast tego, java będzie rozmawiał bezpośrednio z konsolą Windows, która nie rozumie sekwencji unikowych. Stąd pojawiają się bezpośrednio na ekranie.

Istnieje kilka sposobów, można rozwiązać ten:

  • Powiedz Java/Scala używać konsoli Windows API zamiast sekwencji kontrolnych Unix. Myślę, że usunięcie opcji -Djline.terminal=jline.UnixTerminal może to zrobić.
  • Ustaw opcję CYGWIN=tty. Dzięki temu programy wywoływane w konsoli Cygwin mają połączone wejścia I/O z urządzeniem "pseudo terminalowym" (pty) zamiast bezpośredniego połączenia z oknem konsoli. Dzięki temu funkcje emulacji terminalu są dostępne dla programów innych niż Cygwin, ale oznacza to, że programy korzystające z interfejsu API konsoli systemu Windows przestaną działać poprawnie.
  • Użyj jednego z innych emulatorów terminala Cygwin: mintty, xterm, rxvt (-unicode). Oferują one lepszą emulację terminala i bardziej sensowne interfejsy użytkownika niż konsola domyślna, ale znowu kosztem braku obsługi programów korzystających z interfejsu API konsoli systemu Windows.

(Btw, opcja CYGWIN=server jest przestarzała; cecha, że ​​włączony jest zawsze tak.)

+0

rozwiązać ten uruchamiając mintty –