6

http://github.com/technomancy/swank-clojureの埋め込みセクションに基づいて、次を使用してテストしています。コンパイラを使用しないでこれを行うより良い方法はありますか? プログラムでスワンクを停止する方法はありますか? 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

4

1 に答える 1

5

Embedそのクラスを Clojure で実装することはあなたにとって受け入れられますか? gen-classこれは、 (詳細についてはMeikel Brandmeyer のチュートリアルを参照してください) と AOT コンパイルを使用して行うことができます。

コードは次のようになります

(ns your-app.Embed
  (:require [swank.swank :as swank])
  (:gen-class
   :methods [[startSwank [] void]]))

(defn -startSwank []
  (swank/start-repl))

(他に必要なものを追加してください); 次に、アプリケーションの Java 部分で、Clojure で準備されたクラスをインポートしてインスタンス化し、インスタンスを呼び出すことができ.startSwank()ます。

プログラムでSwankを停止することについてはわかりません...自分でそれを行う良い方法を知りたいです。(そして、私がそれを理解した場合、私はアップデートで戻ってきます;そうでなければ、それについての方法を詳述した他の誰かの答えを読みたいです。)

于 2010-04-18T20:48:56.290 に答える