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上找到源?
答案 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环境变量。