如何从java的classpath外部动态加载Clojure脚本?

bri*_*ice 5 java clojure classpath embedded-language

我希望启用用户定义的Clojure脚本来与我的Java App进行交互.问题是,我事先并不知道Clojure脚本的位置,所以在运行应用程序时我不能将它们包含在我的类路径中.

如何从类路径外部动态加载Clojure脚本?

我试过这个简单的例子:

RT.loadResourceScript("test.clj");
Var foo = RT.var("user", "foo");
Object result = foo.invoke("Hi", "there");
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

使用看起来像的test.clj:

(ns user)

(defn foo [a b]
    (str a " " b))
Run Code Online (Sandbox Code Playgroud)

但没有运气.

我认为它与RT.makeClassLoader()RT.baseLoader()使用返回的加载器加载clojure文件有关,但我似乎无法使其工作.(我一直在接受ClassNotFound)我可能会为javadoc而糊里糊涂clojure.lang.RT,但我根本找不到它们.

Stu*_*rra 6

尝试 clojure.lang.Compiler.loadFile(String file)