我想执行以下操作:我有一个用 Clojure/ClojureScript 编写的简单函数:
(defn add
[a b]
(+ a b))
我想将此函数包装到一个 Java 类中并将其放入 jar 中,以便我可以在现有的 Java/Android 项目中访问它。我之前的方法是使用 gen-class 并创建一个 uberjar。然而,这会导致一些problems .
作为替代方法,我考虑使用 ClojureScript 编译该函数(Sam Beran 也建议了一个解决方案)。
到目前为止我了解如何:
- compile javascript 文件写入 Java classes
- 将它们放入 .jar 中
- 编译 ClojureScript
我并不费力地将 ClojureScript 输出转换为可以传递给 Rhino 编译器的格式。
有什么想法吗?
重要提示:我不想创建一个具有 main 函数的类 done here !
最佳答案
解决这个问题的一种通用方法是:
构建时:
- 运行 ClojureScript 编译器生成 JavaScript 文件
- 将JavaScript文件放入资源目录中。
- 编译使用它的 Java 类
- 创建一个 jar 文件(Uberjar 或普通的 Unterjar)
这个 Java 类应该:
- 创建一个 java 类,在初始化时启动 Rhino
- 实例化时从资源运行 JavaScript。
在服务器桌面上,您可能无法获得同样出色的启动时间 My. Beran 报道了 android,因为 android 上的进程具有在启动时以预热的运行时开始生命的优点,Rhino 从启动的那一刻起就准备就绪(它们从 Zygote 进程继承它)
关于java - 使用 Rhino 从 Clojurescript 生成 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28057104/