在Clojure中编译问题

时间:2009-03-03 17:37:15

标签: java clojure compilation classpath

我一直在尝试在Clojure中编译一个非常简单的test.clj而没有任何成功。我在thread上有一个Clojure Google Group,有多个回复,但没有任何帮助。为了快速总结,这是我的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中给出的所有标准命令运行Clojure以及线程java -classpath .;src;classes;clojure.jar clojure.main中的最新建议。

如果有帮助,我的文件系统如下所示:

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

P.S。我在Vista Ultimate上运行,因此它可能可能是权限问题,但我检查了权限并且找不到任何错误。

2 个答案:

答案 0 :(得分: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)))

答案 1 :(得分:0)

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