How to save the current JShell session in Java 9?


Java 9 has introduced a new feature is the creation of a REPL (Read-Evaluate-Print-Loop) called JShell. It is a command-line prompt tool to evaluate Java code without the need to write a complete program.

When we can enter code or internal commands in JShell, we need to use it during the current session. When we can close JShell and log-in again, all of the code previously entered has lost. An internal command has been implemented in order to save all code entered into a file using the "/save" command.

/ save [file-path]
/ save -all [file-path]
/ save -history [file-path]
/ save -start [file-path]
  • /save [file-path]: without argument, this command saves all of the active code entered during the session in the file entered in the second argument. Note that the code entered in error and the internal commands are not saved in the file.
  • /save -all [file-path]: saves all of the active code, in error and at startup, entered during the session, in the file entered as the second argument. Internal orders entered are not recorded.
  • /save -history [file-path]: saves all the code and commands entered during the session, in the file entered in the second argument. Even the internal commands are saved in the file.
  • /save -start: saves all the code launched when JShell starts.

In the below code snippet, the code entered in JShell is saved in different files, depending on the option entered after the "/save" command. We need to save those files in a directory with ".jsh" extension

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

Updated on: 08-Apr-2020

470 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements