2010-07-30 3 views
9

ho creato il file "hello.clj"Come compilare file in clojure

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

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

e provo a compilare

 
clojurec hello.clj 

Ma ho avuto questo errore

 
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 prova anche a mettere questo nel file ed esegui clojore ciao.clj

 
(compile 'clojure.examples.hello) 

Ma ho ottenuto lo stesso errore.

+0

Solo per curiosità, cos'è il clojurec? ...? Da dove lo hai preso? Consiglio vivamente Leiningen, però (vedi la mia risposta per i dettagli). È usato molto ampiamente nella comunità Clojure e non dovresti avere problemi a ottenere supporto nell'usarlo. –

+0

È un compilatore clojure standard su sistema linux, lo script di shell con invoke: exec java -cp /usr/share/java/clojure.jar:"$dest_dir$extra_clas spath "-Dclojure.compile.path =" $ dest_dir "clojure .lang.Compile "$ @" – jcubic

risposta

6

Un namespace chiamato clojure.examples.hello necessità di risiedere in un file chiamato hello.clj in una directory $CPDIR/clojure/examples, dove $CPDIR è una directory inclusa nel percorso di classe della JVM.

In generale, provare a impostare il classpath ed eseguire il comando di compilazione a mano ha poco senso. Utilizzare invece Leiningen; il README ha una spiegazione abbastanza esauriente di ciò che devi fare.