2010-12-17 85 views
6

我在Windows Vista上使用cygwin 1.77。 我在shell中遇到了sbt的輸出問題。 一些相關的環境瓦爾:在cygwin/vista中sbt的兩個問題

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

(1)當我鍵入sbt test殼含有大量的不可打印的字符:

alt text

我該如何解決這個問題?

我SBT shell腳本是這樣的:

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)sbt命令找不到scalatest罐子&我不知道如何配置它通過常春藤下載。如果我將罐子放入lib文件夾中,它可以工作。

回答

6

關於1):

Cygwin的控制檯的工作方式是,有這麼UNIX終端控制序列映射到Windows控制檯API調用的DLL的Cygwin的一部分。由於該終端仿真是Cygwin DLL的一部分,因此它不適用於非Cygwin程序,如Java運行時。相反,java將直接與Windows控制檯交談,該控制檯不理解轉義序列。因此它們直接出現在屏幕上。

有幾個方法,你可以解決這個問題:

  • 告訴的Java /斯卡拉使用Windows控制檯API,而不是Unix的控制序列。我想刪除-Djline.terminal=jline.UnixTerminal選項會做到這一點。
  • 設置CYGWIN=tty選項。因此,在Cygwin控制檯中調用的程序將其I/O連接到「僞終端」(pty)設備,而不是直接連接到控制檯窗口。這使得終端仿真功能可用於非Cygwin程序,但這意味着使用Windows控制檯API的程序將不再正常工作。
  • 使用Cygwin的其他終端仿真器之一:mintty,xterm,rxvt(-unicode)。這些提供了比默認控制檯更好的終端仿真和更明智的用戶界面,但同樣以不支持使用Windows控制檯API的程序爲代價。

(順便說一句,在CYGWIN=server選項已經過時;它啓用該功能始終是反正。)

+0

運行mintty解決了這個 – 2010-12-18 09:15:30