如何在Java 9中保存当前的JShell会话?

Java 9引入了一项新功能,即创建称为JShellREPL 读取-评估-打印循环)。它是一种命令行提示工具,无需编写完整的程序即可评估Java代码。

当我们可以在JShell中输入代码或内部命令时,我们需要在当前会话期间使用它。当我们可以关闭JShell并再次登录时,先前输入的所有代码都将丢失。为了使用“ / save ”命令输入的所有代码保存到文件中,已执行了内部命令。

/ save [file-path]
/ save -all [file-path]
/ save -history [file-path]
/ save -start [file-path]
  • / save [file-path]:不带参数,此命令将在会话期间输入的所有活动代码保存在第二个参数输入的文件中。请注意,错误输入的代码和内部命令不会保存在文件中。

  • / save -all [file-path]:将在会话期间输入的所有活动代码(错误和启动时)保存在作为第二个参数输入的文件中。输入的内部订单不会记录。

  • / save -history [file-path]:将会话期间输入的所有代码和命令保存在第二个自变量输入的文件中。甚至内部命令也保存在文件中。

  • / save -start:保存JShell 启动时启动的所有代码。

在下面的代码片段中,根据在“ / save”命令之后输入的选项,在JShell中输入的代码将保存在不同的文件中。我们需要将这些文件保存在扩展名为“ .jsh ”的目录中

C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> int x = 20
x ==> 20

jshell> double y = 30
y ==> 30.0

jshell> public int sum(int a, int b) {
...>       return a + b;
...>    }
| created method sum(int,int)

jshell> String str = "nhooo"
str ==> "nhooo"

jshell> /list

1 : int x = 20;
2 : double y = 30;
3 : public int sum(int a, int b) {
       return a + b;
    }
4 : String str = "nhooo";

jshell> int var = "error"
|   Error:
|   incompatible types: java.lang.String cannot be converted to int
|   int var = "error";
|   ^-----^

jshell> /save C:\Users\User\save.jsh

jshell> /save -all C:\Users\User\saveAll.jsh

jshell> /save -history C:\Users\User\saveHistory.jsh

jshell> /save -start C:\Users\User\saveStart.jsh