ユーザー定義の 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()
または、返されたローダーを使用してclojureファイルをロードすることと関係があると思いRT.baseLoader()
ますが、動作させることができないようです。(私は を取得し続けClassNotFound
ます) おそらく の javadoc をいじることができましたclojure.lang.RT
が、単にそれらを見つけることができませんでした。