我目前正在尝试将clojure集成到gradle springboot项目中,尽管它工作正常,但在RT.loadClassForName("au.edu.uq.core");之前,我确实必须使用Clojure.var才能访问该函数,如果我对RT.loadClassForName("au.edu.uq.core");进行注释,就会出现如下错误:
线程"main“java.lang.IllegalStateException中的异常:试图调用未绑定的fn:#'au.edu.uq.core/hello-from-clojure。
但在build.gradle中,我已经包括了classes.dependsOn compileClojure。
有build.gradle、主Java和clojure命名空间的屏幕截图。这是一个小小的演示项目,让我学习gradle,有什么建议可以让这个构建过程更优雅吗?
启动脚本是./gradlew bootRun和./gradlew run
//这是Java主类

//这是clojure名称空间

//这是build.gradle

发布于 2019-04-21 23:11:46
从主类的截图中可以看出,您似乎正在使用Clojure.lang.RT加载您的函数,而官方参考文件则提出了不同的建议:
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();https://stackoverflow.com/questions/55782195
复制相似问题