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)


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to