2014-08-27 48 views
1

我在Windows機器上設置Scala,並嘗試從Cygwin運行它。我能夠啓動REPL和執行命令,但是當我試圖預加載一個文件(-i)有人告訴我,該文件不存在:從Scala訪問Cygwin路徑REPL

$ 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使用的是Windows目錄的根目錄,而不是Cygwin's:

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

你不能。

一些cygwin轉換是在啓動腳本中完成的,用於類路徑,但它不會執行文件參數。

考慮scala file.scala和scala pkg.Main是不明確的。

編輯:也許值得一個功能請求,因爲除了處理,你可以嘗試檢測文件路徑轉換(斜槓和冒號)。

(當然,這是從普通的Java相同的條件下,。)

+0

哇,我想我從來沒有遇到需要Java的絕對路徑(例如'javac/tmp/Test.java'失敗)。 – dimo414 2014-08-28 03:12:04

0

這是可悲的,預期的行爲,如詳細介紹了Using Cygwin effectively頁:

Windows程序不瞭解POSIX路徑名,所以任何引用文件系統的參數都必須使用Windows(或DOS)格式或轉換格式。

cygpath工具可以用來工作,解決此問題在某些情況下,但這不會斯卡拉REPL內工作,並要求以其他方式跨平臺腳本明確處理一個Cygwin環境。