2010-07-30 52 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对你需要做的事情有一个非常全面的解释。