基于http://github.com/technomancy/swank-clojure的嵌入部分,我将使用以下内容对其进行测试。有没有一种不使用Compiler的更好的方法?有没有办法通过编程来停止swank?似乎start-repl控制了线程。有什么好方法可以为它派生另一个线程,并能够编程地杀死那个线程。
import clojure.lang.Compiler;
import java.io.StringReader;
public class Embed {
public static void main(String[] args) throws Exception {
final String startSwankScript =
"(ns my-app\n" +
" (:use [swank.swank :as swank]))\n" +
"(swank/start-repl) ";
Compiler.load(new StringReader(startSwankScript));
}
} 任何帮助都非常感谢,hhh
发布于 2010-04-19 04:48:56
你能接受在Clojure中实现Embed类吗?您可以使用gen-class (有关详细信息,请参阅Meikel Brandmeyer's tutorial )和AOT编译来做到这一点。
代码可能是这样的
(ns your-app.Embed
(:require [swank.swank :as swank])
(:gen-class
:methods [[startSwank [] void]]))
(defn -startSwank []
(swank/start-repl))然后,在应用程序的Java部分,您可以导入由Clojure准备的类,实例化它,并在实例上调用.startSwank()。
不确定是否以编程方式停止Swank...我很想知道我自己有什么好方法去做。(如果我弄清楚了,我会带着更新回来的;否则,我会很乐意阅读其他人的回答,详细说明如何去做。)
https://stackoverflow.com/questions/2661025
复制相似问题