(require)函数的clojure类路径问题?

pro*_*eek 3 java clojure classpath

CLASSPATH将"/ Users/smcho/Desktop/clojure"作为其路径之一,并且此目录具有文件hello.clj.

运行clojure并运行(require'hello)会显示此错误消息.

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

当我将目录更改为"/Users/.../clojure",并运行相同的(require'hello)时,没有问题.的.在CLASSPATH上.

运行

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

也有效.

为什么clojure无法在CLASSPATH上找到源代码?

Sid*_*ddy 7

与Alex提到的一样,如果使用-cp参数启动java,则不会引用CLASSPATH环境.所以,而不是

java -cp /Users/smcho/bin/jar/clojure.jar clojure.lang.Repl
Run Code Online (Sandbox Code Playgroud)

使用

java -cp /Users/smcho/bin/jar/clojure.jar:$CLASSPATH clojure.lang.Repl
Run Code Online (Sandbox Code Playgroud)

您可以在Clojure repl中检查您的java类路径:

(doseq [p (.getURLs (java.lang.ClassLoader/getSystemClassLoader))] (println (.getPath p)))
Run Code Online (Sandbox Code Playgroud)