开发者

access clojure via java classes

Hello I have a main method in a Java class and I would like to access and run my clojure functions from my java classe开发者_如何学JAVAs, is that possible right?

Help please


If you just want to call a function which you have defined in a Clojure script the following code might help you getting the job done:

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");
    }
}

Output:

Hi Daisy Duck!

Make sure you have the Clojure jar on your classpath


Do you have your Clojure code compiled and packaged in a jar? Do you have the jar in your classpath? If so, you should be able to use the classes in the jar just as if there were written in Java.


see the accepted answer to this question: Calling clojure from java

in short you add the mothods you want to expose to your namespace:

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

then write the functions. compile your class file with maven/leiningen

then call them from java:

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

This is just an excerpt. take a look as the origional question.


Check the Java Scripting API for calling functions in script files: http://download.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜