Java 9在 JDK 发行版中引入了名为JShell的 REPL。有什么方法可以连接到正在运行某些应用程序的 JDK 的 JShell 并执行引用该正在运行的应用程序的命令。例如从应用程序代码中执行一些方法、检查对象等......?
问问题
862 次
3 回答
4
JShell 不是标准的 java 命令,它是另一个命令。一旦你打开外壳,它就会在 Read Eval Print Loop 中“运行”。一旦你输入一个命令,它就会被 shell 读取和解析,评估并打印结果。
您可以定义变量并将类添加到类路径,但我认为从那里启动应用程序或服务器是不可能的,至少在这个阶段不能,也不能在同一个 JVM 中。由于您可以添加类,因此您可以实例化它们,但您无法检查它们的变量。但是,您可以在 JShell 范围内看到您实例化的变量(您创建了哪些对象,您只能访问和打印它们的公共方法和变量)。
JShell 似乎会有一个 api,它为其他可能性开辟了道路。
于 2016-06-23T12:05:39.257 回答
0
不,用 jshell 不容易。
但是让我重新表述你的问题,以便我们不使用 jshell,而是使用任何 REPL java 工具:
有没有办法将一些 REPL java 工具连接到正在运行的 java 应用程序并执行引用该正在运行的应用程序的命令。例如从应用程序代码中执行一些方法、检查对象等......?
https://github.com/lorenzoongithub/nudge4j
那么你应该看看 nudge4j 它确实允许
唯一需要注意的是 Java 8。
于 2016-06-30T10:19:02.997 回答