Java 9正在JDK发行版中引入名为JShell的REPL。是否有任何方法连接到运行某些应用程序的JDK的JShell并执行引用正在运行的应用程序的命令。例如,执行一些方法形成应用程序代码,检查对象等等。
发布于 2016-06-23 12:05:39
JShell不是标准的java命令,而是另一个命令。一旦打开外壳,它就会在循环中“去”。一旦输入命令,它就会被shell读取和解析,计算结果并打印出来。
您可以定义变量并将类添加到类路径中,但我不认为从那里启动应用程序或服务器是不可能的,至少在这个阶段和在同一个JVM中是不可能的。因为您可以添加类,所以可以实例化它们,但是您没有检查它们的变量的选项。但是,您可以看到在JShell作用域中实例化的变量(您创建了哪些对象,您只能访问和打印它们的公共方法和变量)。
看来JShell将有一个api,它为其他可能性打开了道路。
发布于 2016-06-30 10:19:02
不,用jshell可不容易。
但是,让我重新表述一下您的问题,这样我们就不会使用jshell,而是使用任何REPL工具:
有没有办法将一些REPL java工具与运行中的java应用程序连接起来,并执行引用正在运行的应用程序的命令。例如,执行一些方法形成应用程序代码,检查对象等等。
https://github.com/lorenzoongithub/nudge4j
那么您应该看看nudge4j,它确实允许
唯一的警告是针对java 8。
发布于 2017-01-30 11:38:41
您可以考虑的另一种选择是类似于BeanShell (尽管BeanShell已经很老了,可能已经被废弃了)。您可以在应用程序内部启动一个BeanShell控制台,允许您访问对象并调用它们上的方法。有关一些想法,请参阅JConsole示例。
https://stackoverflow.com/questions/37989501
复制相似问题