如何在 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 [文件路径]: 不带参数时,此命令将会话期间输入的所有活动代码保存到第二个参数中输入的文件中。请注意,错误输入的代码和内部命令不会保存到文件中。
  • /save -all [文件路径]: 保存会话期间输入的所有活动代码(包括错误和启动时的代码)到作为第二个参数输入的文件中。不会记录输入的内部命令。
  • /save -history [文件路径]: 将会话期间输入的所有代码和命令保存到第二个参数中输入的文件中。甚至内部命令也会保存到文件中。
  • /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 = "TutorialsPoint"
str ==> "TutorialsPoint"

jshell> /list

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

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

更新于: 2020-04-08

620 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告