(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环境变量。