加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:34:47 所属栏目:Java 来源:网络整理
导读:使用clojure.lang.Compiler.compile从 Java编译Clojure是否合法? 我们的Java应用程序用于通过在具有代理宏的.clj源上使用clojure.lang.Compiler.load来创建Clojure对象的实例. 现在我们想要使用gen-class而不是代理来AOT编译这些对象.这样就可以移动.class
使用clojure.lang.Compiler.compile从 Java编译Clojure是否合法?

我们的Java应用程序用于通过在具有代理宏的.clj源上使用clojure.lang.Compiler.load来创建Clojure对象的实例.
现在我们想要使用gen-class而不是代理来AOT编译这些对象.这样就可以移动.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);

解决方法

你应该尝试使用 clojure.core/compile功能.你也可以看一下lein如何处理:aot param做 aot compilation.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读