Based on discussions I've seen on this list and clojure-dev, I think you're using internal APIs that are not considered "supported" and therefore subject to change at any time.
I asked about using clojure.lang.RT a while ago and was told to rely on very little of the API, for example, so all I rely on is .var() and calling .invoke() on the result of that. I would say the Compiler is "out of bounds" and that you should instead use RT.var() and .invoke() with basic Clojure functions to read and eval your string. On Tue, Mar 12, 2013 at 6:29 PM, Taegyoon Kim <stelofl...@gmail.com> wrote: > 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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > -- Sean A Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ World Singles, LLC. -- http://worldsingles.com/ "Perfection is the enemy of the good." -- Gustave Flaubert, French realist novelist (1821-1880) -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.