2015-01-17 61 views
10

我能夠在終端中使用scalac編譯scala程序,但是我得到警告。可以編譯Scala程序但不能運行它們

Charless-Macintosh:src Charles$ scalac hello.scala 
Charless-Macintosh:src Charles$ scala HelloWorld 
No such file or class on classpath: HelloWorld 

這是關於scala上的.profile。至於發生了什麼,我很困惑。非常感謝

回答

21

默認情況下,當前目錄通常不在類路徑中。所以你需要明確地給出:

$ scala -cp . HelloWorld 
+0

非常感謝。 – Mark

+0

我想這是一個Mac特定的東西? classpath肯定包含Linux下的當前目錄。 Mac特定的shell腳本有什麼不同嗎? (Java本身的做法與此不同嗎?) –

+0

這取決於您的Java設置。我相信有時它默認包含它,有時它不包含它。 – sjrd

3

問題是你已經設置了CLASSPATH環境變量。

> man scalac

缺省類路徑是當前目錄。 設置CLASSPATH變量或使用-classpath命令行選項將覆蓋默認值,因此如果要將當前目錄包括在搜索路徑中,則必須包含「。」。在新設置

當你有CLASSPATH變量集,斯卡拉將不包括在其搜索當前目錄,你必須明確地添加它。這就是爲什麼scala -cp . HelloWorld有效。

要驗證,執行echo CLASSPATH它應該給一些非空字符串。檢查您的.bashrc/.zshrc文件是否有任何export CLASSPATH=...並刪除這些行。

0

這也發生在我身上,但我認爲更好的解決方案是修改CLASSPATH變量以包含當前目錄以及您已有的內容。例如現在

export CLASSPATH=.:$CLASSPATH

,你可以簡單地使用scala HelloWorld沒有額外的說法。

相關問題