有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

阅读运行应用程序的eval print loop Java 9 REPL

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


共 (3) 个答案

  1. # 1 楼答案

    不,用jshell不容易

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

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

    https://github.com/lorenzoongithub/nudge4j

    然后你应该看看nudge4j,它确实允许这样做

    唯一需要注意的是java 8

  2. # 2 楼答案

    你可以考虑的另一个选项是^ BeanShell(虽然BeanShell很旧,很可能被弃用)。您可以从应用程序内部启动BeanShell控制台,允许您访问对象并对其调用方法。有关一些想法,请参见JConsole示例

  3. # 3 楼答案

    JShell不是标准的java命令,它是另一个命令。一旦你打开外壳,它就会进入读评估打印循环。键入命令后,shell将读取并解析该命令,对其求值并打印结果

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

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