2009-03-03 67 views
7

我一直在試圖在Clojure中編譯一個非常簡單的test.clj而沒有任何成功。 Clojure Google Group我有thread有幾個迴應,但沒有任何幫助。要快速總之,這裏是我的Clojure文件:在Clojure中編譯問題

(ns test.test 
    (:gen-class)) 

(defn -main 
    [gre] 
    (println (str "Hello " gre))) 

基本上它是在Clojure documentation提供的示例文件。

我已將這個文件合適地放入clojure/src/test/test.clj,並且應該可以用(compile 'test.test)編譯,但是我一直收到錯誤:

java.io.IOException: The system cannot find the path specified (test.clj:1)
,這導致我相信這是一個類路徑問題。我試着用 Clojure documenation中給出的所有標準命令以及線程 java -classpath .;src;classes;clojure.jar clojure.main的最新建議來運行Clojure。

如果有幫助,我的文件系統是這樣的:

-+-clojure 
+-classes/ 
+-+-src/ 
| |-+-test/ 
| | \-test.clj 
+-\-test.clj 
+-test.clj 
+-clojure.jar 

附:我在Vista旗艦版上運行,所以它可能可能是一個權限問題,但我已檢查權限,無法找到他們的任何錯誤。

回答

9

控制檯輸出在Windows編譯test.clj

C:\clojure>dir /b/s 
C:\clojure\classes 
C:\clojure\src 
C:\clojure\src\test 
C:\clojure\src\test\test.clj 

C:\clojure>java -cp c:\dev\clojure.jar;.\src;.\classes clojure.lang.ReplClojure 
user=> (compile 'test.test) 
test.test 
user=> 

生成的類文件位於classes目錄下。

此外,請注意,您在主要中缺少右括號。修改後的版本:

(ns test.test 
    (:gen-class)) 

(defn -main 
    [gre] 
    (println (str "Hello " gre))) 
+0

外觀極好!非常感謝,它就像一個魅力!另外,我要編輯這個問題,因爲我剛剛從副本/粘貼中刪除了這個關鍵字。 – Mike 2009-03-03 19:34:08

0
C:\clojrue\java -cp .\src;.\classes;clojure.jar 
    -Dclojure.compile.path=classes clojure.lang.Compile test.test