我觉得这里有点傻,但我无法让Clojure Hello World编译。
目录结构:
hello-world/
clojure-1.1.0.jar
build/
classes/
src/
test/
hello.clj
hello.clj:
(ns test.hello
(:gen-class))
(defn -main [& args]
(println "Hello" (nth args 0)))
相互作用:
$ cd hello-world
[hello-world]$ java -cp ./clojure-1.1.0.jar:./build/classes:./src clojure.main
Clojure 1.1.0
user=> (require 'test.hello)
nil
user=> (test.hello/-main "there")
Hello there
nil
user=> (compile 'test.hello)
java.io.IOException: No such file or directory (hello.clj:2)
user=> *compile-path*
"classes"
user=> (doseq [p (.split (System/getProperty "java.class.path") ":")] (println p))
./clojure-1.1.0.jar
./build/classes
./src
nil
所以我可以从REPL加载并调用该文件,但它不能编译。
根据clojure.org,编译需要
我发现this post from a year back,据我所知,我做的完全一样,但它不起作用。
我错过了什么?
系统:OS X 10.6,Java 1.6.0,Clojure 1.1
答案 0 :(得分:21)
知道了,还有第四项要求:
(System/getProperty "user.dir")
,这样可行:
user=> (set! *compile-path* "build/classes")
"build/classes"
user=> (compile 'test.hello)
test.hello
答案 1 :(得分:11)
为什么不使用Leiningen?使用它比使用手动编译代码要容易得多。您可以使用my article作为介绍......
答案 2 :(得分:0)
运行clojure文件
clojure filename.clj