在 Java 个应用程序中编译 ClojureScript

Compile ClojureScript in Java application

我正在尝试编译 String,其中包含 Java/Groovy 中的 Clojure Script 代码。我对使用 "java -jar ...".execute().

不是很满意

有没有办法调用clojurescript库(1.8.51版本)来编译代码?

编辑: 所以结合这两个链接我得到了这个代码(Groovy):

    IFn require = Clojure.var("clojure.core", "require");
    require.invoke(Clojure.read("cljs.analyzer.api"))
    require.invoke(Clojure.read("cljs.compiler.api"))

    IFn emptyEnv = Clojure.var("cljs.analyzer.api", "empty-env")
    IFn analyze = Clojure.var("cljs.analyzer.api", "analyze")
    IFn emit = Clojure.var("cljs.compiler", "emit-str")

    final inputText = "(defn plus [a b] (+ a b))"
    emit.invoke(
            analyze.invoke(emptyEnv.invoke(), "'$inputText"
            )
    )

我的问题是发出函数 return 空字符串 :/。我做错了什么吗?

Edit2:分析方法return this:

{
    :op :constant, 
    :env {:ns {:name cljs.user}, 
    :context :statement, 
    :locals {}, 
    :fn-scope [], 
    :js-globals ...removed..., 
    :form #object[org.codehaus.groovy.runtime.GStringImpl 0x37816ea6 "'(defn plus [a b] (+ a b))"], 
    :tag any
}

从 Clojure 调用 ClojureScript 编译器 API 应该很容易,例如 .

但是如果您想从 Java 或 Groovy 开始,您将不得不使用一些 Clojure Java API for calling Clojure from Java