проблема classpath clojure для (требуют) функции? - PullRequest
3 голосов
/ 31 июля 2010

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" и запускаю его (требуется 'привет'), проблем нет. . находится на CLASSPATH.

Бег

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

тоже работает.

Почему clojure не может найти источник на CLASSPATH?

Ответы [ 2 ]

7 голосов
/ 31 июля 2010

Как упомянул Алекс, если вы запускаете java с аргументом -cp, на среду CLASSPATH не ссылаются. Итак, вместо

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

использование

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

Вы можете проверить свой путь к классу Java из реплики Clojure:

(doseq [p (.getURLs (java.lang.ClassLoader/getSystemClassLoader))] (println (.getPath p)))
4 голосов
/ 31 июля 2010

Вы не указали, какую командную строку вы использовали в первом примере, но обратите внимание, что если вы используете флаг -cp, переменная среды CLASSPATH не будет указана.

...