通过java类访问clojure

时间:2011-10-05 13:01:54

标签: java functional-programming clojure

你好我在Java类中有一个main方法,我想从我的java类中访问和运行我的clojure函数,这可能吗?

请帮助

4 个答案:

答案 0 :(得分:4)

如果您只想调用已在Clojure脚本中定义的函数,则以下代码可帮助您完成工作:

<强> test.clj:

(ns test)
(defn hello [name]
  (println (str "Hi " name "!")))

<强> TestRun.java:

import clojure.lang.RT;
public class TestRun {
    public static void main(String[] args) throws Exception {
        RT.loadResourceScript("test.clj");
        // var(namespace, function name).invoke(parameters..)
        RT.var("test", "hello").invoke("Daisy Duck");
    }
}

<强>输出:

Hi Daisy Duck!

确保你的类路径上有Clojure jar

答案 1 :(得分:2)

您是否已将Clojure代码编译并打包在jar中?你的课程中有罐子吗?如果是这样,你应该能够使用jar中的类,就像用Java编写的那样。

答案 2 :(得分:2)

查看此问题的已接受答案:Calling clojure from java

简而言之,您要将要公开的方法添加到命名空间:

(ns com.domain.tiny
  (:gen-class
    :name com.domain.tiny
    :methods [ [binomial [int int] double]]))

然后编写函数。使用maven / leiningen

编译您的类文件

然后从java中调用它们:

System.out.println("(binomial 5 3): " + tiny.binomial(5, 3));

这只是一段摘录。看看作为原始问题。

答案 3 :(得分:0)