我有一個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)可能會有所幫助。 –