我希望启用用户定义的 Clojure 脚本来与我的 Java 应用程序交互。问题是,我事先不知道 Clojure 脚本的位置,因此在运行应用程序时我无法将它们包含在我的类路径中。
如何从我的类路径外部动态加载 Clojure 脚本?
我试过这个简单的例子:
RT.loadResourceScript("test.clj");
Var foo = RT.var("user", "foo");
Object result = foo.invoke("Hi", "there");
System.out.println(result);
使用如下所示的 test.clj:
(ns user)
(defn foo [a b]
(str a " " b))
但没有运气。
我认为它与RT.makeClassLoader()
或RT.baseLoader()
使用返回的加载程序加载 clojure 文件有关,但我似乎无法使其工作。(我不断得到ClassNotFound
)我可能会在 javadoc 中糊涂clojure.lang.RT
,但我根本找不到它们。