2010-07-31 41 views
3

CLASSPATH將「/ Users/smcho/Desktop/clojure」作爲其路徑之一,並且此目錄具有文件hello.clj。(需要)函數的clojure類路徑問題?

運行clojure,並運行(要求'你好')給出這個錯誤信息。

 
java.io.FileNotFoundException: Could not locate hello__init.class or hello.clj on classpath: (NO_SOURCE_FILE:0) 

當我改變目錄「/Users/.../clojure」,並運行相同的(需要「你好),沒有任何問題。這個。在CLASSPATH上。

運行

 
java -cp /Users/smcho/bin/jar/clojure.jar:/Users/smcho/Desktop/clojure clojure.lang.Repl 

也適用。

爲什麼clojure無法在CLASSPATH上找到源代碼?

回答

7

就像Alex提到的那樣,如果您使用-cp參數啓動java,則不會引用CLASSPATH環境。所以,與其

java -cp /Users/smcho/bin/jar/clojure.jar clojure.lang.Repl 

使用

java -cp /Users/smcho/bin/jar/clojure.jar:$CLASSPATH clojure.lang.Repl 

您可以從Clojure的REPL內檢查您的Java類路徑:

(doseq [p (.getURLs (java.lang.ClassLoader/getSystemClassLoader))] (println (.getPath p))) 
4

您沒有指定用於第一個示例的命令行,但請注意,如果使用-cp標誌,則不會引用CLASSPATH環境變量。