我有一个Maven项目,我在clojure-maven-plugin的帮助下将Java和Clojure代码混合在一起。我的clojure代码被编译为AOT吗?
我有一个Clojure的命名空间是这样的:
(ns org.myproject.clojure
(:gen-class))
(defn do-stuff [] (println "Doing stuff"))
包括Java,我把它想:
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("org.myproject.clojure"));
IFn do_stuff = Clojure.var("org.myproject.clojure", "do-stuff");
do_stuff.invoke();
运行此代码,“做的东西”是否正确被打印到屏幕。此外,我可以在Maven生成的jar中查看我的clojure代码的.class文件。尽管如此,我仍然不确定当我需要命名空间时clojure在做什么。它是否重新编译整个事物?或者,我的代码是正确的AOT编译与我的设置?
最后,有没有办法将clojure代码视为“常规”java函数?也就是说,导入org.myproject.clojure并将其作为常规函数调用?鉴于clojure正在为我的代码生成字节码。我不明白为什么Java不能称它为字节码兼容。
我不知道回答你的问题,但[this](http://clojure.org/compilation)可能会有所帮助。 –