关于将Clojure集成到springboot框架中

时间:2019-04-21 11:10:59

标签: spring-boot gradle clojure

我目前正在尝试将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

//这是Java主类 enter image description here

//这是clojure命名空间 enter image description here

//这是build.gradle enter image description here

1 个答案:

答案 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();