在 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。
我正在尝试编译 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。