Switching to a Sun JVM in RHEL

Java Sep 4, 2007

RedHat by default supplies GNU Java tools (GJC). The IBM JDK or the BEA JDK are in the "extra" channel. But what if you want to use the Sun JDK...
Current licensing (2007/05) doesn't allow Sun JDK to be distributed by RedHat. (Maybe this will change with openJava?) Fortunately RedHat is actively involved with JPackage which makes it fully JPackage compatible! (hooray!)
If you use this guide, then the entire system will end up using the Sun JDK.

check the current java(c) version:

$ java -version
[probably the GNU one]
$ javac -version
[probably the Eclipse Java Compiler]

Install the Sun JDK

  1. get the latest Sun JDK RPM: Go to the directory where you want to download, extract and install (eg: cd /tmp, cd /root).
    $ links http://java.sun.com/javase/downloads/index.jsp
    Choose the link to the latest JDK. On the download page: accept the agreement in links and download the JDK RPM-in-bin for linux.
  2. Make the downloaded binary executable and run it:
    $ chmod u+x jdk--linux-i586-rpm.bin
    $ ./jdk--linux-i586-rpm.bin
    The rpm is extracted from the bin and installed (accept the license). The java version is now installed in /usr/java/. This dir contains all individual versions and two symlinks: "latest" and "default". You should never reference to any of these locations (see 4).
  3. Get the matching JPackage compatibility package for this Sun JDK:
    $ links ftp://jpackage.hmdc.harvard.edu/JPackage/1.7/generic/RPMS.non-free/
    $ rpm -ivh java-x.x.x-sun-compat-x.x.x.xx-1jpp.i586.rpm
  4. To make the Sun JDK the default for the entire system, use the 'alternatives' method. This will create symlinks in /etc/alternatives/ that are used throughout the entire system (eg see "$ ll /usr/bin/java"). [select the Sun version instead of the GNU version for each of these commands]
    $ /usr/sbin/alternatives --config java
    $ /usr/sbin/alternatives --config javac

check the new installation

$ java -version
[should be the new Sun version]
$ javac -version
[should be the new Sun version]