2010-12-17 16 views
6

Estoy usando cygwin 1.77 en Windows Vista. Tengo problemas con la salida de sbt en el shell. Algunos entorno relevante vars:Dos problemas con sbt en cygwin/vista

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

(1) Cuando escribo sbt test la cáscara contiene una gran cantidad de caracteres no imprimibles:

alt text

¿Cómo puedo solucionar este problema?

Mi SBT shell script es el siguiente:

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) El comando sbt no puede encontrar el frasco scalatest & No sé cómo configurarlo para descargarlo a través de hiedra. Funciona si dejo caer el jar en la carpeta lib.

Respuesta

6

En cuanto a 1):

La forma en que funciona la consola Cygwin es que hay una parte de la DLL de Cygwin que mapea las secuencias de control de terminal Unix para llamadas a la API de la consola de Windows. Dado que la emulación de terminal forma parte de la DLL de Cygwin, no está disponible para programas que no son de Cygwin, como el tiempo de ejecución de Java. En cambio, java hablará directamente con la consola de Windows, que no comprende las secuencias de escape. Por lo tanto, aparecen directamente en la pantalla.

Hay algunas maneras que usted puede hacer frente a este:

  • Dile a Java/Scala de utilizar la API de la consola de Windows en lugar de secuencias de control de Unix. Supongo que eliminar la opción -Djline.terminal=jline.UnixTerminal haría eso.
  • Establezca la opción CYGWIN=tty. Con eso, los programas invocados en la consola Cygwin tienen sus E/S conectadas a un dispositivo "pseudo terminal" (pty) en lugar de conectarse directamente a la ventana de la consola. Esto hace que las funciones de emulación de terminal estén disponibles para programas que no son Cygwin, pero significa que los programas que usan la API de la consola de Windows ya no funcionarán correctamente.
  • Utilice uno de los otros emuladores de terminal de Cygwin: mintty, xterm, rxvt (-unicode). Estos ofrecen una mejor emulación de terminal y más interfaces de usuario sensatas que la consola predeterminada, pero nuevamente a costa de no admitir programas que usan la API de la consola de Windows.

(Por cierto, la opción CYGWIN=server es obsoleta; la función que habilita siempre está de todos modos.)

+0

resuelto este ejecutando mintty –