创建一个简单的Clojure命令行应用,编译为class文件,运行class文件:
$ mkdir hello && cd hello
$ mkdir -p src/com/hello_world classes
$ cat << EOF > src/com/hello_world/core.clj
(ns com.hello-world.core
(:gen-class))
(defn -main
[greetee]
(println (str "Hello " greetee "!")))
EOF
$ java -cp $HOME/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar:.:./src:./classes clojure.main
user=> (compile 'com.hello-world.core)
user=> ^d
$ java -cp $HOME/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar:.:./classes 'com.hello_world.core' "chao"
Hello chao!
注意什么时候用-
,什么时候用_
,为了避免麻烦,最好不要在包名里加-
和_
。
注意:
-
编译时classpath里面必须有
classes
文件夹,用其他名字会导致错误,原因不明; -
Clojure的namespace相当于Java的package,必须与路径对应;
-
要编译一个Clojure类,必须在namespace里面加
(:gen-class)
;