直接调用`clojure.lang.Compiler.compile`到AOT从Java编译Clojure

Jon*_*ord 5 clojure

使用Java编译Clojure是否合法clojure.lang.Compiler.compile

我们的Java应用程序用于通过clojure.lang.Compiler.load在具有proxy宏的.clj源上使用来创建Clojure对象的实例.现在我们想用AOT编译这些对象gen-class而不是proxy.这样就可以移动.class文件了,我们稍后会实例化这些对象.

到目前为止我所管理的最好的是说服clojure.lang.Compiler.compile我生成加载器类文件("my/domain/lib__init.class").但我似乎没有得到附带的.class文件,命名空间中的每个函数一个("my/domain/lib $ fnname__1234.class")和每个文件的存根类文件gen-class.这是在沙箱中使用http://clojure.org/compilation上非常简单的第一个例子.我以为我正确设置了编译路径,并将其设置为类路径中的某些东西,但也许还存在一个问题.

在任何情况下,我们的实际应用程序都是基于RCP(Eclipse),这可能意味着他们将更多地根据OSGI类加载器类路径来计算.与此同时,我只是想知道clojure.lang.Compiler.compile直接使用是否是一种有效的方法?

编辑:所以我现在得到它生成所有.class文件,但它需要各种未记录的初始化,这告诉我,方法clojure.lang.Compiler是内部的.我必须将*compile-path*和*compile-files*设置为true,例如

RT.var("clojure.core", "*compile-files*").bindRoot(true);
Run Code Online (Sandbox Code Playgroud)

Ank*_*kur 2

你应该尝试使用clojure.core/compile函数。您还可以查看 lein 如何处理:aot参数来进行aot 编译