2010-07-30 1 views
9

I Datei "hello.clj"Wie Datei in clojure kompilieren

erstellt haben
 
(ns clojure.examples.hello 
    (:gen-class)) 

(defn -main 
    [greetee] 
    (println (str "Hello " greetee "!"))) 

und versuchen

 
clojurec hello.clj 

zu kompilieren, aber ich habe diesen Fehler

 
Exception in thread "main" java.io.FileNotFoundException: Could not locate hello/clj__init.class or hello/clj.clj on classpath: 
    at clojure.lang.RT.load(RT.java:398) 
    at clojure.lang.RT.load(RT.java:367) 
    at clojure.core$load__5058$fn__5061.invoke(core.clj:3734) 
    at clojure.core$load__5058.doInvoke(core.clj:3733) 
    at clojure.lang.RestFn.invoke(RestFn.java:413) 
    at clojure.core$load_one__5010.invoke(core.clj:3578) 
    at clojure.core$compile__5065$fn__5067.invoke(core.clj:3744) 
    at clojure.core$compile__5065.invoke(core.clj:3743) 
    at clojure.lang.Var.invoke(Var.java:346) 
    at clojure.lang.Compile.main(Compile.java:56) 

I Versuchen Sie auch, dies in die Datei zu legen und clojore hello.clj

auszuführen

Aber habe den gleichen Fehler.

+0

Nur aus Neugier, was ist 'clojurec' ...? Wo hast du es her? Ich empfehle Leiningen jedoch wirklich (siehe meine Antwort für Details). Es ist sehr weit verbreitet in der Clojure-Community und Sie sollten kein Problem haben, Unterstützung bei der Verwendung zu erhalten. –

+0

Es ist Standard-Clojure-Compilator auf Linux-System, seine Shell-Skript mit Aufruf: exec java -cp /usr/share/java/clojure.jar:"$dest_dir$extra_clas spath "-Dclojure.compile.path =" $ dest_dir "clojure .lang.Compile "$ @" – jcubic

Antwort

6

Ein Namespace clojure.examples.hello Bedürfnisse genannt in einer Datei residieren genannt hello.clj in einem Verzeichnis $CPDIR/clojure/examples, wo $CPDIR ein Verzeichnis in dem JVM Classpath enthalten ist.

Im Allgemeinen ist es wenig sinnvoll, den Klassenpfad zu setzen und den Kompilierbefehl per Hand auszugeben. Verwenden Sie stattdessen Leiningen; Die README hat eine ziemlich gründliche Erklärung, was Sie tun müssen.