2010-07-31 6 views
3

CLASSPATH a le "/ Users/smcho/Desktop/clojure" comme un de son chemin, et ce répertoire a le fichier hello.clj.Problème classpath clojure pour la fonction (obligatoire)?

L'exécution de clojure et l'exécution (require 'hello) donnent ce message d'erreur.

 
java.io.FileNotFoundException: Could not locate hello__init.class or hello.clj on classpath: (NO_SOURCE_FILE:0) 

Quand je change de répertoire "/Users/.../clojure", et exécuter le même (require « bonjour), il n'y a pas de problème. Le . est sur le CLASSPATH.

Courir

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

fonctionne également.

Pourquoi clojure ne trouve pas la source sur le CLASSPATH?

Répondre

7

Comme Alex l'a mentionné, si vous lancez Java avec l'argument -cp, l'environnement CLASSPATH n'est pas référencé. Ainsi, au lieu de

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

utilisation

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

Vous pouvez examiner votre java classpath à partir du rempl Clojure:

(doseq [p (.getURLs (java.lang.ClassLoader/getSystemClassLoader))] (println (.getPath p))) 
4

Vous n'avez pas spécifié la ligne de commande que vous avez utilisée pour le premier exemple, mais notez que si vous utilisez l'indicateur -cp, la variable d'environnement CLASSPATH n'est pas référencée.