2010-07-30 51 views
9

我創建文件 「hello.clj」如何編譯文件中的Clojure

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

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

,並嘗試編譯

 
clojurec hello.clj 

但我得到這個錯誤

 
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) 

我也試着把它放在文件中並運行clojore hello.clj

 
(compile 'clojure.examples.hello) 

但得到了同樣的錯誤。

+0

出於好奇,什麼是clojurec ...?你從哪裏得到它的?不過我真的推薦Leiningen(詳情請參閱我的回答)。它在Clojure社區中使用非常廣泛,您在使用它時應該沒有問題獲得支持。 – 2010-07-30 08:56:30

+0

它是linux系統上的標準clojure編譯器,它的shell腳本調用:exec java -cp /usr/share/java/clojure.jar:"$dest_dir$extra_clas spath「-Dclojure.compile.path =」$ dest_dir「clojure .lang.Compile 「$ @」 – jcubic 2010-07-30 13:21:29

回答

6

稱爲clojure.examples.hello需要一個命名空間駐留在一個文件中的目錄$CPDIR/clojure/examples,其中$CPDIR是包含在JVM的類路徑的目錄名爲hello.clj

一般來說,試圖設置類路徑並手工發佈編譯命令毫無意義。改爲使用Leiningen; README對你需要做的事情有一個非常全面的解釋。