我希望启用用户定义的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);
使用看起来像的test.clj:
(ns user)
(defn foo [a b]
(str a " " b))
但没有运气.
我认为它与RT.makeClassLoader()或RT.baseLoader()有关,并使用返回的加载器加载clojure文件,但我似乎无法使它工作. (我一直在使用ClassNotFound)我可能会混淆clojure.lang.RT的javadoc,但我根本找不到它们.
最佳答案:
试试clojure.lang.Compiler.loadFile(String file)
标签:java,clojure,classpath,embedded-language
来源: https://codeday.me/bug/20190515/1110672.html