我试图在我的Java代码中访问我的一些clojure函数(我正在使用Eclipse和CounterClockWise)。首先,我不知道该怎么办?但后来我找到了一些答案here。
我正在使用clojure.lang.RT package
在我的Java代码中调用.clj
个文件。在命名命名空间时,.clj
文件遵循了正确的约定,例如ns test.clojure.core
在test.clojure
包中,其中核心是.clj
文件。在了解了一些信息之后,我在我的src/test/java
中添加了java-source-path(即java-source-path src/test/clojure
)和source-path(即source-path project.clj
)。
但是,当我运行我的Java文件后,会出现错误 - a)Could not locate Clojure resource on classpath
b)Attempting to call unbound fn
。
如果社区中的任何人都可以通过详细的程序或教程帮助我(假设我是绝对的初学者),我将不胜感激,因为我可以得到的信息(使用clojure.lang.RT
)非常少。
期待得到一个完整的答案来结束我的沮丧。
答案 0 :(得分:2)
我猜你正在使用导致问题的RT.loadResourceScript
。
你可以试试这样的东西:
//Load the namespace
RT.var("clojure.core","eval").invoke(RT.var("clojure.core","read-string").invoke("(use 'test.clojure.core)"));
//Find a function in namespace
IFn fn = (IFn)RT.var("test.clojure.core","hello");
//Call that function
fn.invoke();