首页 文章

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

提问于
浏览
7

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

3 回答

  • 1

    JShell不是标准的java命令,它是另一个命令 . 一旦打开shell,它就会在Read Eval Print Loop中“走” . 键入命令后,shell将对其进行读取和解析,并进行评估并打印结果 .

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

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

  • 4

    不,不容易使用jshell .

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

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

    https://github.com/lorenzoongithub/nudge4j

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

    唯一需要注意的是java 8 .

  • 0

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

相关问题