ClojureLanguage implements Language { @Override public Object eval(final String strToEval) { try { return this.runtime.callInLoader(new Callable() { @Override public Object call() throws Exception { return Clojure.var("clojure.core", "eval") .invoke(Clojure.var("clojure.core", "read-string") .invoke("(do " + strToEval + ")")); } }); } catch (Throwable e) { throw new RuntimeException(e); } }  @Override void initialize(); @Override LoaderWrapper runtime(); @Override void shutdown(); @Override Object eval(final String strToEval); @SuppressWarnings("unchecked") @Override T coerceToClass(Object object, Class<T> toClass);  }
@Test public void testCanEvalCode() { assertEquals("it works!", clojure.eval("(require 'basic.core)(basic.core/test-fn)")); }