我正在我的Windows机器上设置Scala,并尝试从Cygwin运行它。我能够启动REPL并执行命令,但是当我尝试预加载文件(-i
)时,我被告知该文件不存在:
$ scala -i /home/username/preload.scala
That file does not exist
Welcome to Scala version 2.11.2 (Java HotSpot(TM) Client VM, Java 1.7.0_02).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
现在,该文件确实存在于终端中:
$ [ -f /home/username/preload.scala ] && echo EXISTS
EXISTS
但是Scala找不到它。事实证明,Scala使用的是Windows目录root,而不是Cygwin的:
scala> Files.newDirectoryStream(Paths.get("/")).asScala.foreach{println}
\$Recycle.Bin
\cygwin
\Documents and Settings
\Drivers
\Program Files
\Program Files (x86)
\ProgramData
\Recovery
\System Volume Information
\Users
\Windows
但现在我有点失落。如何告诉Scala REPL使用Cygwin路径,或者相反如何配置Cygwin以正确启动Scala?
答案 0 :(得分:0)
你不能。
对于类路径,在启动器脚本中完成了一些cygwin转换,但它没有执行文件参数。
将scala file.scala和scala pkg.Main视为不明确。
编辑:也许它值得一个功能请求,因为除了-i处理之外,你可以尝试检测要转换的文件路径(斜杠和冒号)。
(当然,这与普通Java的条件相同。)
答案 1 :(得分:0)
遗憾的是,这是预期的行为,详见Using Cygwin effectively页面:
Windows程序不了解POSIX路径名,因此引用文件系统的任何参数都必须采用Windows(或DOS)格式或翻译。
在某些情况下,cygpath
实用程序可用于解决此问题,但这在Scala REPL中不起作用,并且需要在其他跨平台脚本中显式处理Cygwin环境。