Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different Java version showing on command line

Tags:

java

version

cmd

I have recently checked on my Java version. I ran the command java -version and I found out that I was using java version 1.7.0_09. But when I tried to check on C:\Program Files\Java\ directory, I don't seem to find the same version. I only see the following:

  • j2re1.4
  • jdk1.6.0_32
  • jdk1.7.0_06
  • jdk1.7.0_07
  • jre6
  • jre7

And so on...

My programs still run, but I'm just trying to compile everything manually, and understand how Java is being treated by the OS.

Another thing that is weird is, I tried to check on environment variable settings, and it does not say anything about jdk1.7.0_09.

Path:

  • C:\Program Files\Common Files\Microsoft Shared\Windows Live;
  • %SystemRoot%\system32;
  • %SystemRoot%;
  • %SystemRoot%\System32\Wbem;
  • %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
  • C:\Program Files\TortoiseSVN\bin;
  • C:\Program Files\Windows Live\Shared;
  • C:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.6.5\appengine-java-sdk-1.6.5\bin;
  • C:\Program Files\Java\jdk1.7.0_07\bin;C:\Program Files\QuickTime\QTSystem\;
  • %ANT_HOME%\bin

Just want to let you guys know that it somehow automatically became a jre.

The complete directory is C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09 and it's just got the file named lzma.dll.

But, I have another directory that says C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07. The files inside it are:

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • and sz170070.cab
like image 637
Franz Noel Avatar asked Dec 05 '12 23:12

Franz Noel


2 Answers

It's possible to have many JRE side-by-side on a computer.

If the JRE is properly installed on Windows, informations about each version are stored in the registry. The installation process installs a special java.exe in the system PATH (%SYSTEMROOT%\System32). So you don't need to alter you PATH because this special java.exe will find the current JRE. From a command line, type java -version to display the current jre version installed.

With release 1.6, it's now possible to select a different JRE installation than the last one without any registry modification.

The JRE installation are listed in the registry in the key

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

Take this simple test class

public class ShowVersion {
 public static void main(String args[]) {
   System.out.println(System.getProperty("java.version"));
 }
}

On a system, with 1.6 and 1.5 installed. If you type

> java ShowVersion

It's probably the 1.6 JRE that will be used since it's the last installed.

To force the 1.5 JRE instead, use this command line.

> java -version:"1.5" ShowVersion

If the bytecode is incompatible with the given JRE then .. it won't work, of course.

ref : technote java 6

You can always give the complete path to use a specific installation. Launching the JVM this way does not use the registry setting at all.

>"C:\Program Files\Java\j2re1.4.1_02\bin\java" -version
java version "1.4.1_02"

source : Select a particular JRE from the command line

like image 88
RealHowTo Avatar answered Oct 13 '22 07:10

RealHowTo


Adding the following will resolve your issue:

set JAVA_HOME="your jdk path"
set PATH=%JAVA_HOME%\bin;%PATH%.

Additionally if it does not work that means you have set the PATH for multiple java versions, include only the latest one and remove all from PATH variables.

like image 34
Shashidhar Avatar answered Oct 13 '22 06:10

Shashidhar