我正在尝试将 clojure 源代码编译成类文件,并仅使用命令行运行它,没有 lein,也没有(可能)回复。
我有 core.cljsrc/hello
目录。
.
└── src
└── hello
└── core.clj
这是源代码。
(ns hello.core)
(defn -main
"This should be pretty simple."
[]
(println "Hello, World!"))
using (compile)
在 REPL 中。
从这个网站的提示(http://clojure.org/compilation http://clojure.org/compilation),我尝试从 REPL 获取类文件。
我开始 REPLlein repl
在 src 目录中,然后尝试编译出现错误。
user=> (compile 'hello.core)
CompilerException java.io.IOException: No such file or directory, compiling:(hello/core.clj:1:1)
命令行
从这篇文章用于将 Clojure .clj 编译为 .class / .jar 的简单工具 https://stackoverflow.com/questions/14926707/simple-tool-for-compiling-clojure-clj-into-class-jar and 如何在clojure中编译文件 https://stackoverflow.com/questions/3369898/how-to-compile-file-in-clojure,看来我可以在 REPL 之外编译 clojure 源代码。
我试过这个.
得到一个错误。
> java -cp .:<PATH>/clojure-1.6.0.jar -Dclojure.compile.path=build clojure.lang.Compile src/hello/core.clj
Compiling src/hello/core.clj to build
Exception in thread "main" java.io.FileNotFoundException: Could not locate
hello/core/clj__init.class or hello/core/clj.clj on classpath:
at clojure.lang.RT.load(RT.java:443)
at clojure.lang.RT.load(RT.java:411)
...
所以,这是我的问题:
- 如何编译 clojure 源代码以获取带/不带 REPL 的类?
- 如何用Java运行该类?是否足以执行
java -cp .:CLOJURE_JAR main
?