如何在 Java 9 中保存当前的 JShell 会话?
javaobject oriented programmingprogramming
Java 9 引入了一项新功能,即创建一个名为 JShell 的 REPL (Read-Evaluate-Print-Loop)。它是一个 命令行 提示工具,用于评估 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 启动时启动的所有代码。
在下面的代码片段中,在 JShell 中输入的代码保存在不同的文件中,具体取决于在 "/save" 命令后输入的选项。我们需要将这些文件保存在扩展名为 ".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