On Jan 3, 8:13 pm, "Mark Volkmann" <[email protected]> wrote:
> I'd like to learn how to invoke Clojure code from a Java application.
> I see at least two options.
>
> 1) From a Java application, read a text file containing Clojure code
> and invoke specific functions it defines from Java code.
Here's how I do it:
import clojure.lang.RT;
import clojure.lang.Var;
...
RT.loadResourceScript("source/file/on/classpath/here.clj");
Var myfunction = RT.var("my-namespace", "my-function");
myfunction.invoke("arg 1", "arg 2", ...);
> 2) Compile Clojure code to bytecode and use it from a Java application
> just like any other Java code.
A little trickier; but easy if your Clojure code is implementing an
existing Java interface.
(ns my.cool.library
(:gen-class :implements [SomeJavaInterface]))
(defn -functionDefinedInInterface [this arg1 arg2 ...]
...)
Note: defn names for functions defined in the interface begin with
"-". Remember every method takes an extra "this" argument.
To generate the .class file, use "(compile my.cool.library)" or
clojure.lang.Compile.
-Stuart Sierra
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---