2010-11-09 32 views
25

我有一個運行在Sun Java 6 JVM中的tomcat下的java web應用程序。有沒有辦法將scala或clojure REPL附加到正在運行的JVM?將clojure/scala編號附加到正在運行的JVM中

一旦webapp啓動並運行,進行調用的上下文已經在運行的VM中設置。因此,這對於調用任意的java方法調用增量式,探索式開發和調試非常有用。

回答

20

複製答案從另一個問題,根據您的要求:

liverepl:一個Clojure的REPL連接到運行Java或Clojure的過程中沒有任何特殊設置

從網站: 開始的Clojure [R EPL連接到任何正在運行的Java或Clojure進程 ,而無需事先以任何特殊方式設置進程。 現在支持連接到Tomcat Web應用程序。 您可以使用repl來運行代碼,檢查變量,並重新定義Clojure函數。

https://github.com/djpowell/liverepl

7

有沒有辦法到REPL附加到已經運行的JVM,所以你需要考慮向後問題...

啓動REPL服務器上,無論是在程序啓動或響應到入站客戶端連接(使用例如Telnet)。

這裏有一個很好的例子:http://blog.homecloud.ca/2010/03/scripster-interactive-scala-repl-using.html

你也可以在你的服務器主機的翻譯實例,然後露出一個Web界面。這是如果你想調試的,那麼你會被這個答案得到更好的服務由http://www.simplyscala.com/


採取的方法:Drop into interpreter during arbitrary scala code location

+1

以下類似問題的答案http://stackoverflow.com/questions/4131006/attach-a-clojure-repl-to-a-running-jvm它似乎是可能的,至少clojure repl(scala太我想) – jneira 2010-11-09 09:23:20

+0

我認爲這個答案很好顯示的替代品,並在寫作時沒有選擇在Scala做這種事情,但現在看來https://github.com/ngocdaothanh/scalive可以提供類似的方案 – 2014-03-20 08:24:56

+0

我開始認爲我有一個追蹤者...這個和我的其他一些答案downvote沒有任何意義。 – 2014-07-12 13:38:24

5

您可以使用此: https://github.com/wirde/swank-inject

允許您將一個Clojure的REPL到正在運行的Java進程(啓用遠程調試)。

您還可以指定許多類(單例),爲其找到實例並綁定到repl中可用的符號。

1

對於連接到其他JVM的Scala REPL,請看Scalive

相關問題