On Mar 25, 3:12 am, BerlinBrown <berlin.br...@gmail.com> wrote:
> I know it isn't advised but I have my various reasons.
>
> What are some of the best ways to invoke clojure scripts from Java but
> still maintain the state of the current session.
>
> For example, if I run a script from Java, is there a way to ensure
> that script has already been run...say if I run another script.
> I was doing the following.
>
> ----------------------
>
> package test.toolkit.clojure;
>
> import clojure.lang.Namespace;
> import clojure.lang.RT;
> import clojure.lang.Symbol;
> import clojure.lang.Var;
>
> public class TestSpringLoadClojure {
>
> final static private Symbol CLOJURE_MAIN = Symbol.create
> ("clojure.main");
> final static private Namespace CLOJURE_MAIN_NS =
> Namespace.findOrCreate(CLOJURE_MAIN);
> final static private Var REQUIRE = Var.intern(RT.CLOJURE_NS,
> Symbol.create("require"));
> final static private Var LEGACY_REPL = Var.intern(CLOJURE_MAIN_NS,
> Symbol.create("legacy-repl"));
> final static private Var LEGACY_SCRIPT = Var.intern(CLOJURE_MAIN_NS,
> Symbol.create("legacy-script"));
> final static private Var MAIN = Var.intern(CLOJURE_MAIN_NS,
> Symbol.create("main"));
>
> private static void legacy_script(String[] args) throws Exception {
> REQUIRE.invoke(CLOJURE_MAIN);
> LEGACY_SCRIPT.invoke(RT.seq(args));
> }
>
> private static void invoke_script(String[] args) throws Exception {
> LEGACY_SCRIPT.invoke(RT.seq(args));
> }
>
> public static void main(final String [] args) throws Exception {
>
> final String [] scripts = { };
> final String [] scripts2 = { "clj/utils/test_use_utils.clj" };
> legacy_script(scripts);
> Var.intern(Namespace.findOrCreate(Symbol.create("clojure")),
> Symbol.create("*console*"), "abc");
> invoke_script(scripts2);
>
> }
>
> }
>
> But I get an error message:
>
> [java] java.lang.Exception: Unable to resolve symbol: *console*
> in this context (test_use_utils.clj:45)
> [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute
> (ExecuteJava.java:194)
Nevermind.
(println "-->" clojure/*console*)
if I do this, I get it
--~--~---------~--~----~------------~-------~--~----~
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
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
-~----------~----~----~----~------~----~------~--~---