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

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

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

 java.io.FileNotFoundException:找不到类路径上的hello__init.class或hello.clj:(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上找到源代码?

就像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))) 

您没有指定用于第一个示例的命令行,但请注意,如果使用-cp标志,则不会引用CLASSPATH环境变量。