将clojure / scala repl附加到正在运行的JVM

我有一个在Sun java 6 JVM中在tomcat下运行的java Web应用程序。 有没有办法将scala或clojure REPL附加到正在运行的JVM?

一旦webapp启动并运行,就会在正在运行的VM中设置要进行调用的上下文。 因此,这对于为增量,探索性开发和调试调用任意java方法调用非常有用。

根据您的要求复制其他问题的答案:

liverepl:将Clojure REPL连接到正在运行的Java或Clojure流程,无需任何特殊设置

从网站: 启动连接到任何正在运行的Java或Clojure流程的Clojure REPL,而无需事先以任何特殊方式设置流程。 现在支持连接到Tomcat Web应用程序。 您可以使用repl运行代码,检查变量并重新定义Clojure函数。

https://github.com/djpowell/liverepl

没有办法将REPL附加到已经运行的JVM上,所以你需要向后思考这个问题……

在程序启动时或在响应入站客户端连接时(使用例如Telnet)启动服务器上的REPL。

这里有一个很好的例子: http : //blog.homecloud.ca/2010/03/scripster-interactive-scala-repl-using.html

您还可以在服务器中托管Interpreter实例,然后公开Web界面。 这是http://www.simplyscala.com/采取的方法


如果您正在考虑调试,那么您可以通过以下答案获得更好的服务: 在任意scala代码位置放入解释器

你可以使用这个: https : //github.com/wirde/swank-inject

允许您将Clojure repl附加到正在运行的java进程(启用远程调试)。

您还可以指定一些类(单例),找到哪些实例并绑定到repl中可用的符号。

对于连接到其他JVM的Scala REPL,请查看Scalive 。