你好我在Java类中有一个main方法,我想从我的java类中访问和运行我的clojure函数,这可能吗?
请帮助
答案 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)
检查Java Scripting API以调用脚本文件中的函数: http://download.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html