A new error occurred in Clojure 1.5.0.(Java interop: Compiler.load(new StringReader(str));)# Code #
import java.io.IOException;
import java.io.StringReader;import clojure.lang.Compiler;
import clojure.lang.RT;
import clojure.lang.Var;public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//clojure.main.main(args);
// Load the Clojure script -- as a side effect this initializes the runtime.
String str = "(ns user) (defn foo [a b] (str a \" \" b)) (def a 3)";//RT.loadResourceScript("foo.clj");
Compiler.load(new StringReader(str));// Get a reference to the foo function.
Var foo = RT.var("user", "foo");
Var a = RT.var("user", "a"); // reference to the variable a// Call it!
Object result = foo.invoke("Hi", "there");
System.out.println(result);
System.out.println(a);
System.out.println(a.get());
}
}Test code: https://bitbucket.org/ktg/clojureembedtest (Eclipse project)
Reference: http://stackoverflow.com/questions/2181774/calling-clojure-from-java--$ java -version
java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04.1)
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)$ java -cp clojure-1.5.0.jar:. Main
Exception in thread "main" java.lang.ExceptionInInitializerError
at clojure.lang.Compiler.<clinit>(Compiler.java:47)
at Main.main(Main.java:16)
Caused by: java.lang.NullPointerException
at clojure.lang.RT.baseLoader(RT.java:2043)
at clojure.lang.RT.load(RT.java:417)
at clojure.lang.RT.load(RT.java:411)
at clojure.lang.RT.doInit(RT.java:447)
at clojure.lang.RT.<clinit>(RT.java:329)
... 2 more$ java -cp clojure-1.4.0.jar:. Main
Hi there
#'user/a
3
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.