Chapter 1. Interactively selecting a system-wide OpenJDK version on RHEL

If you have multiple versions of OpenJDK installed on RHEL, you can interactively select the default OpenJDK version to use system-wide.


If you do not have root privileges, you can select an OpenJDK version by configuring the JAVA_HOME environment variable.


  • You must have root privileges on the system.
  • Multiple versions of OpenJDK were installed using the yum package manager.


  1. View the OpenJDK versions installed on the system.

    $ yum list installed "java*"

    A list of installed Java packages appears.

    Installed Packages
    java-1.8.0-openjdk.x86_64                     1:                     @rhel-8-appstream-rpms
    java-1.8.0-openjdk-headless.x86_64            1:                     @rhel-8-appstream-rpms
    java-11-openjdk.x86_64                        1:                         @rhel-8-appstream-rpms
    java-11-openjdk-headless.x86_64               1:                         @rhel-8-appstream-rpms
    javapackages-filesystem.noarch                5.3.0-1.module+el8+2447+6f56d9a6            @rhel-8-appstream-rpms
  2. Display the OpenJDK versions that can be used for a specific java command and select the one to use:

    $ sudo alternatives --config java
    There are 2 programs which provide 'java'.
      Selection    Command
    *+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-
       2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-
    Enter to keep the current selection[+], or type selection number: 1
    • The current system-wide OpenJDK version is marked with an asterisk.
    • The current OpenJDK version for the specified java command is marked with a plus sign.
  3. Press Enter to keep the current selection or enter the Selection number of the OpenJDK version you want to select followed by the Enter key.

    The default OpenJDK version for the system is the selected version.

  4. Verify that the chosen binary is selected.

    $ java -version
    openjdk version "1.8.0_242"
    OpenJDK Runtime Environment (build 1.8.0_242-b08)
    OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

    This procedure configures the java command. Then javac command can be set up in a similar way, but it operates independently.

    If you have OpenJDK installed, alternatives provides more possible selections. In particular, the javac master alternative switches many binaries provided by the -devel sub-package.

    Even if you have OpenJDK installed, java (and other JRE masters) and javac (and other OpenJDK masters) still operate separately, so you can have different selections for JRE and JDK. The alternatives --config java command affects the jre and its associated slaves.

    If you want to change the Java, use the javac alternatives command. The --config javac utility configures the SDK and related slaves. To see all possible masters, use alternatives --list and check all of the java,javac, jre, and sdk masters.