How to Verify Java Configuration
search cancel

How to Verify Java Configuration

book

Article ID: 297560

calendar_today

Updated On:

Products

VMware Tanzu Application Service for VMs

Issue/Introduction

There is a lot of information on the web that talks about how to install java, but sometimes after installing Java, you are left wondering if your environment is properly configured to use it.  OSX and CentOS add a few layers of complexity to java installation and this article will give you the tools to uncover the truth about what version your shell environment is sourcing.

 


Environment


Resolution

Verify and switch version context in OSX

  • Check what versions are installed
    MacBook-Pro:~ danl$  /usr/libexec/java_home -V
    Matching Java Virtual Machines (3):
        1.7.0_60, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
        1.6.0_65-b14-462, x86_64:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
        1.6.0_65-b14-462, i386:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    
  • Check what version your environment is currently using
    MacBook-Pro:~ danl$ java -version
    java version "1.7.0_60"
    Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
    Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
    
  • Switch the version context to 1.6
    MacBook-Pro:~ danl$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
    
    MacBook-Pro:~ danl$ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    

Verify and switch version context in CentOS

Sometimes after installing an RPM, there will be some flavor of java that slides in because of dependencies.  This is the most common scenario where your java installation gets hijacked.

  • Check what versions are installed
    [root@hdw3 ~]# java -version
    java version "1.5.0"
    gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-4)
    
    Copyright (C) 2007 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
  • Oops! we have gcj java set as our default despite what we set for $JAVA_HOME.  The reason is alternatives makes /usr/bin/java a soft link that points to a softlink which finally points to gcj JRE binaries.  So your cli commands will use /usr/bin/java but normally your application services like hadoop will force java home to be whatever is defined in $JAVA_HOME bash environmental variable. 
    • [root@hdw3 ~]# ls -l `which java`
      lrwxrwxrwx 1 root root 22 Mar 22 23:01 /usr/bin/java -> /etc/alternatives/java
      
      [root@hdw3 ~]# ls -l /etc/alternatives/java
      lrwxrwxrwx 1 root root 35 Mar 22 23:01 /etc/alternatives/java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java
      
  • Here is how to fix alternatives so /usr/java/bin points to the preferred version of java
  1. First check what alternatives thinks is installed. In this case alternatives thinks gcj is the only version installed. 
    alternatives --config java
    
    There is 1 program that provides 'java'.
    
      Selection    Command
    -----------------------------------------------
    *+ 1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
    
    Enter to keep the current selection[+], or type selection number:
    
  2. Compare alternatives to what actually is installed.  we find that JDK 1.7 is installed and this is the default version want to use instead of GCJ
    [root@hdw3 ~]# ls -l /usr/java/
    total 4
    lrwxrwxrwx 1 root root   16 Mar 22 22:44 default -> /usr/java/latest
    drwxr-xr-x 8 root root 4096 Mar 22 22:44 jdk1.7.0_45
    lrwxrwxrwx 1 root root   21 Mar 22 22:44 latest -> /usr/java/jdk1.7.0_45
    
  3. Add jdk 1.7 to alternatives and set 1.7 as default
[root@hdw3 ~]# alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_45/bin/java 3 --slave /usr/bin/javac javac /usr/java/jdk1.7.0_45/bin/java
[root@hdw3 ~]#

[root@hdw3 ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
   2           /usr/java/jdk1.7.0_45/bin/java

Enter to keep the current selection[+], or type selection number: 2

[root@hdw3 ~]# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
 


Additional Information