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

时间:2010-07-31 04:46:13

标签: 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上找到源?

2 个答案:

答案 0 :(得分: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)))

答案 1 :(得分:4)

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