This Java class will act as a wrapper class for a clojure project. The clojure jar should be available in the namespace. This require clojure version >1.6
...
public class JavaSide {
private final IFn clojureApiHandlerFn;
public JavaSide() {
new clojure.lang.RT();
/* Import clojure core. */
final IFn require = Clojure.var("clojure.core", "require");
// Invoke the clojure namespace
require.invoke(Clojure.read("clojure.namespace"));
// Clojure method handler
this.clojureApiHandlerFn = Clojure.var("clojure.namespace", "clojure-method");
}
private Object invokeClojureFunction(IFn fn, Parameter param) {
return fn.invoke(param);
}
public Object clojureMethod(Parameter param) {
return invokeClojureFunction(this.clojureApiHandlerFn, param);
}
}
...
Example
...
JavaSide wrapper = new JavaSide();
Object response = wrapper.clojureMethod(param);
...