我需要将一些 clojure 文件编译成 java 字节码文件,将它们存储在磁盘上,以便以后能够加载/执行它们。
我尝试了以下方法:
RT.load("clojure/core");
RT.init();
String clazz = "(ns org.rogach.avalanche.build (:gen-class)) (defn -doStuff [] (println 1))";
Compiler.load(new StringReader(clazz));
Compiler.load(new StringReader("(compile 'org.rogach.avalanche.build)"));
但它失败了:
Exception in thread "main" java.io.FileNotFoundException:
Could not locate org/rogach/avalanche/build__init.class or org/rogach/avalanche/build.clj on classpath
公平地说,如果我直接从 clojure REPL 执行该代码,就会发生完全相同的事情。
此外,这种方法不允许我为类文件指定输出目录,这也很重要。
如何将该 clojure 代码编译为类文件?