Java 运行 应用的 9 个 REPL

Java 9 REPL for running app

Java 9 is introducing REPL called JShell 在 JDK 分布中。有什么方法可以连接到 JDK 的 JShell,即 运行 某个应用程序并执行引用该 运行 应用程序的命令。例如从应用程序代码执行一些方法,检查对象等。?

JShell 不是标准的 java 命令,它是另一个命令。一旦你在 Read Eval Print Loop 中打开 shell 它 "goes" 。一旦你键入一个命令,它就会被 shell 读取和解析,评估并打印结果。

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

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

不,jshell 不容易。

但是让我重新表述一下你的问题,这样我们就不会使用 jshell,而是使用任何 REPL java 工具:

有什么方法可以将某些 REPL java 工具连接到 运行 java 应用程序并执行引用该 运行 应用程序的命令。例如从应用程序代码执行一些方法,检查对象等.?

https://github.com/lorenzoongithub/nudge4j

那么你应该看看 nudge4j 它确实允许

唯一需要注意的是 java 8.

您可以考虑的替代选项类似于 BeanShell (although BeanShell is quite old and probably deprecated). You can launch a BeanShell console from inside your application that would allow you to access your objects and call methods on them. See the JConsole 一些想法的示例。