如果使用“java”启动脚本,则看不到打印值

Can't see printed values if launch script with `java`

我有这个代码:

(ns test
  (:gen-class))

(defn -main
  [& args]
  (println "hello!"))

但是当我 运行 java -cp clojure-1.6.0/clojure-1.6.0.jar clojure.main test.clj 我没有输出。为什么?如何解决这个问题?

nsdefn都没有输出任何东西。如果你想通过调用 -main 函数来打印 "hello!",你必须在 test.clj 文件的末尾添加一个函数调用。

(ns test
  (:gen-class))

(defn -main
  [& args]
  (println "hello!"))

(-main)

您可以这样调用 -main 函数:

java -cp clojure-1.6.0/clojure-1.6.0.jar clojure.main -i test.clj -m test

-i加载文件

-m 在命名空间

中启动 -main 函数