java - 使用 Rhino 从 Clojurescript 生成 Java 类

标签 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 !

最佳答案

解决这个问题的一种通用方法是:

构建时:

  • 运行 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/

相关文章:

clojure - ArityException 传递给 : core/max 的参数数量 (0) 错误

java - libGDX:设备关闭时 CountDownTimer 仍在运行

java - 安装的java版本与eclipse中显示的版本不匹配

java - 如何在 Eclipse 中从 Java 类查找 Spring XML 定义

javascript - 通过jQuery点击功能改变img src

emacs - 为什么我不能从 emacs 中 Clojure Cider REPL 的后台线程打印?

java facebook webapp 创建事件日期时区

php - 按下回车键时如何防止表单内的输入字段提交?

javascript - 如何使用 PEG.js 的示例

dictionary - 如何在 clojure 中检查 map 中的重复项?