我有一个在 Sun java 6 JVM 中的 tomcat 下运行的 java web 应用程序。有没有办法将 scala 或 clojure REPL 附加到正在运行的 JVM ?
一旦 webapp 启动并运行,将在其中进行调用的上下文已经在运行的 VM 中设置好了。因此,这对于调用任意 Java 方法调用以进行增量、探索性开发和调试非常有帮助。
我有一个在 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
您还可以在您的服务器中托管一个解释器实例,然后公开一个 Web 界面。这是http://www.simplyscala.com/采用的方法
如果您正在考虑调试,那么这个答案会更好地为您服务:Drop into interpreter during absolute scala code location
你可以使用这个: https ://github.com/wirde/swank-inject
允许您将 Clojure repl 附加到正在运行的 java 进程(启用远程调试)。
您还可以指定许多类(单例),它们的实例将被找到并绑定到 repl 中可用的符号。
对于连接到其他 JVM 的 Scala REPL,请查看Scalive。