将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函数。
没有办法将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 。