Встраивание чванства-clojure в программе Java

На основе раздела Embedding http://github.com/technomancy/swank-clojure я использую следующее для проверения его. Существует ли лучший способ сделать это, которое не использует Компилятор? Существует ли способ программно остановить чванство? Это кажется, запускаются-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

6
задан Jeremy Wall 18 April 2010 в 06:17
поделиться

1 ответ

Было бы приемлемо для вас реализовать класс Embed в Clojure? Вы можете сделать это с помощью gen-class (подробности см. В учебном пособии Мейкеля Брандмейера ) и компиляции AOT.

Код может выглядеть примерно так

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

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

(добавьте все, что вам нужно); затем в Java-части вашего приложения вы можете импортировать ваш подготовленный Clojure класс, создать его экземпляр и вызвать .startSwank () в экземпляре.

Не уверен насчет программной остановки Swank ... Мне было бы любопытно узнать, как самому это сделать. (И я вернусь с обновлением, если выясню это; в противном случае я бы хотел прочитать чей-нибудь ответ, в котором подробно описано, как это сделать.)

5
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: