6

我在 windows vista 上使用 cygwin 1.77。我sbt在 shell 中的输出遇到问题。一些相关的环境变量:

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

(1) 当我键入时sbt test,shell 包含很多不可打印的字符:

替代文字

我怎样才能解决这个问题 ?

我的 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 "$@"
stty icanon echo > /dev/null 2>&1

(2)sbt命令找不到scalatestjar & 我不知道如何配置它以通过常春藤下载它。如果我将 jar 放入lib文件夹中,它会起作用。

4

1 回答 1

6

关于1):

Cygwin 控制台的工作方式是 Cygwin DLL 的一部分将 Unix 终端控制序列映射到 Windows 控制台 API 调用。由于该终端仿真是 Cygwin DLL 的一部分,因此它不适用于非 Cygwin 程序,例如 Java 运行时。相反,java将直接与不理解转义序列的 Windows 控制台对话。因此它们直接出现在屏幕上。

有几种方法可以解决这个问题:

  • 告诉 Java/Scala 使用 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选项已过时;它启用的功能始终处于启用状态。)

于 2010-12-17T09:32:54.403 回答