我目前正在尝试将clojure集成到gradle springboot项目中,即使它可以正常工作,但是如果我评论{{1},我确实必须在RT.loadClassForName("au.edu.uq.core");
访问该函数之前使用Clojure.var
}},将出现类似
线程“ main”中的异常java.lang.IllegalStateException:尝试调用未绑定的fn:#'au.edu.uq.core / hello-from-clojure。
但是在build.gradle中,我已经包含了RT.loadClassForName("au.edu.uq.core");
。
有build.gradle,Main Java类和clojure名称空间的屏幕快照。这是一个供我学习gradle的小演示项目,是否有任何建议可使构建过程更加优雅?
起始脚本为classes.dependsOn compileClojure
和./gradlew bootRun
答案 0 :(得分:1)
从我从Main类的屏幕快照中获得的信息来看,似乎您正在使用Clojure.lang.RT
来加载函数,而official reference documentation则建议相反:
clojure.core
中的功能会自动加载。其他名称空间 可以通过require
加载:IFn require = Clojure.var("clojure.core", "require"); require.invoke(Clojure.read("clojure.set"));
我的建议是尝试以下方法:
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("au.edu.uq.core"));
IFn helloFunction = Clojure.var("au.edu.uq.core", "hello-from-clojure");
helloFunction.invoke();