gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:46:41 26 4
gpt4 key购买 nike

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

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

到目前为止,我所做的最好的事情就是说服 clojure.lang.Compiler.compile为我生成加载器类文件(“my/domain/lib__init.class”)。但我似乎没有得到随附的 .class 文件,命名空间中的每个函数一个(“my/domain/lib$fnname__1234.class”)和每个 gen-class 的 stub 类文件.这是在沙箱中使用 http://clojure.org/compilation 上非常简单的第一个示例.我以为我已经正确设置了 compile-path,并将其设置为类路径中的某些内容,但也许那里仍然存在问题。

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

编辑:所以我现在已经让它产生了所有的 .class 文件,但它需要各种未记录的初始化,这向我暗示了 clojure.lang.Compiler 上的方法。应该是内部的。我必须适本地设置 *compile-path* 并将 *compile-files* 设置为 true,例如

RT.var("clojure.core", "*compile-files*").bindRoot(true);

最佳答案

您应该尝试使用 clojure.core/compile 功能。您也可以查看 lein 如何处理 :aot要做的参数aot compilation .

关于clojure - 从Java直接调用 `clojure.lang.Compiler.compile`进行AOT编译Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com