使用Rhino从Clojurescript生成Java类

时间:2015-01-20 23:27:42

标签: java javascript clojure rhino clojurescript

我想执行以下操作:我有一个用Clojure / ClojureScript编写的简单函数:

(defn add
  [a b]
  (+ a b))

我想将此函数包装到Java类中并将其放在jar中,以便我可以在现有的Java / Android项目中访问它。我以前的方法是使用 gen-class 并创建一个uberjar。然而,这会导致一些problems

作为替代方法,我考虑使用ClojureScript编译函数(Sam Beran建议的解决方案)。

到目前为止,我理解如何:

我没有努力将ClojureScript输出转换为可以传递给Rhino编译器的格式。

有什么想法吗?

重要提示:我想要创建一个带有main函数的类done here

1 个答案:

答案 0 :(得分:1)

解决这个问题的一般方法是:

在构建时:

  • 运行ClojureScript编译器以生成JavaScript文件
  • 将JavaScript文件放入资源目录中。
  • 编译使用它的Java类
  • 制作一个jar文件(一个Uberjar或一个普通的Unterjar)

这个Java类应该:

  • 创建一个初始化启动Rhino的java类
  • on instantiation运行资源中的javascript。

在服务器的桌面上,您可能无法获得相同的启动时间。 Beran报道了android,因为android上的进程具有开始生命的优势,Rhino准备从他们开始的那一刻起就开始运行(他们从Zygote进程继承它)