用于运行应用程序的Java 9 REPL

时间:2016-06-23 10:50:22

标签: java read-eval-print-loop java-9 jshell

Java 9在JDK发行版中引入了名为JShell的REPL。有没有办法连接到运行某些应用程序的JDK的JShell,并执行引用该运行应用程序的命令。例如,执行一些方法形成应用程序代码,检查对象等。?

3 个答案:

答案 0 :(得分:4)

JShell不是标准的java命令,它是另一个命令。一旦打开外壳,它就会出现#34;在Read Eval Print Loop中。键入命令后,shell将对其进行读取和解析,并进行评估并打印结果。

您可以定义变量并向类路径添加类,但我不认为可以从那里启动应用程序或服务器,至少不是在此阶段而不是在同一个JVM中。您可以添加类来实例化它们,但是您没有选择检查它们的变量。但是,您可以在JShell范围中看到实例化的变量(您创建的对象,您只能访问和打印它们的公共方法和变量)。

似乎JShell将拥有一个api,这为其他可能性开辟了道路。

答案 1 :(得分:1)

不,不容易使用jshell。

但是让我重新解释你的问题,这样我们就不会使用jshell而是使用REPL java工具:

有没有办法将一些REPL java工具连接到正在运行的java应用程序,并执行引用该应用程序的命令。例如,执行一些方法形成应用程序代码,检查对象等。?

https://github.com/lorenzoongithub/nudge4j

然后你应该看看nudge4j它确实允许

唯一需要注意的是java 8.

答案 2 :(得分:0)

您可以考虑的替代选项类似于BeanShell(尽管BeanShell很老,可能已弃用)。您可以从应用程序内部启动BeanShell控制台,以允许您访问对象并在其上调用方法。有关一些想法,请参阅JConsole示例。