Chapter 1. Interactively selecting a system-wide Red Hat build of OpenJDK version on RHEL

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

Note

If you do not have root privileges, you can select a Red Hat build of OpenJDK version by configuring the JAVA_HOME environment variable.

Prerequisites

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

Procedure

  1. View the Red Hat build of 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:1.8.0.302.b08-0.el8_4               @rhel-8-appstream-rpms
    java-11-openjdk.x86_64                          1:11.0.12.0.7-0.el8_4                 @rhel-8-appstream-rpms
    java-11-openjdk-headless.x86_64                 1:11.0.12.0.7-0.el8_4                 @rhel-8-appstream-rpms
    java-17-openjdk.x86_64                          1:17.0.0.0.35-4.el8                   @rhel-8-appstream-rpms
    java-17-openjdk-headless.x86_64                 1:17.0.0.0.35-4.el8                   @rhel-8-appstream-rpms
  2. Display the Red Hat build of OpenJDK versions that can be used for a specific java command and select the one to use:

    $ sudo alternatives --config java
    There are 3 programs which provide 'java'.
    
      Selection    Command
    -----------------------------------------------
       1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64/bin/java)
    *  2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/jre/bin/java)
     + 3           java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.0.0.35-4.el8.x86_64/bin/java)
    
    
    
    Enter to keep the current selection[+], or type selection number: 1
    • The current system-wide Red Hat build of OpenJDK version is marked with an asterisk.
    • The current Red Hat build of 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 Red Hat build of OpenJDK version you want to select followed by the Enter key.

    The default Red Hat build of OpenJDK version for the system is the selected version.

  4. Verify that the chosen binary is selected.

    $ java -version
    openjdk version "17" 2021-09-14
    OpenJDK Runtime Environment 21.9 (build 17+35)
    OpenJDK 64-Bit Server VM 21.9 (build 17+35, mixed mode, sharing)
    Note

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

    If you have Red Hat build of 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 Red Hat build of OpenJDK installed, java (and other JRE masters) and javac (and other Red Hat build of 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 Red Hat build of OpenJDK, 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.