我能夠在終端中使用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
。至於發生了什麼,我很困惑。非常感謝
我能夠在終端中使用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
。至於發生了什麼,我很困惑。非常感謝
默認情況下,當前目錄通常不在類路徑中。所以你需要明確地給出:
$ scala -cp . HelloWorld
問題是你已經設置了CLASSPATH
環境變量。
從> man scalac
:
缺省類路徑是當前目錄。 設置CLASSPATH變量或使用-classpath命令行選項將覆蓋默認值,因此如果要將當前目錄包括在搜索路徑中,則必須包含「。」。在新設置。
當你有CLASSPATH
變量集,斯卡拉將不包括在其搜索當前目錄,你必須明確地添加它。這就是爲什麼scala -cp . HelloWorld
有效。
要驗證,執行echo CLASSPATH
它應該給一些非空字符串。檢查您的.bashrc/.zshrc文件是否有任何export CLASSPATH=...
並刪除這些行。
這也發生在我身上,但我認爲更好的解決方案是修改CLASSPATH
變量以包含當前目錄以及您已有的內容。例如現在
export CLASSPATH=.:$CLASSPATH
,你可以簡單地使用scala HelloWorld
沒有額外的說法。
非常感謝。 – Mark
我想這是一個Mac特定的東西? classpath肯定包含Linux下的當前目錄。 Mac特定的shell腳本有什麼不同嗎? (Java本身的做法與此不同嗎?) –
這取決於您的Java設置。我相信有時它默認包含它,有時它不包含它。 – sjrd