在命令行上显示的不同Java版本

时间:2012-12-05 23:05:00

标签: java cmd version

我最近检查了我的Java版本。我运行了java -version命令,发现我正在使用java version 1.7.0_09。但是当我试图检查C:\Program Files\Java\目录时,我似乎找不到相同的版本。我只看到以下内容:

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

等等......

我的程序仍在运行,但我只是尝试手动编译所有内容,并了解操作系统如何处理Java。

另一件奇怪的事情是,我试图查看环境变量设置,但它没有说明jdk1.7.0_09

路径:

  • 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:\蚀\插件\ 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中

只是想让你们知道它以某种方式自动成为一个jre。

完整目录为C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09,它只是名为lzma.dll的文件。

但是,我有另一个名为C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07的目录。其中的文件是:

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • 和sz170070.cab

4 个答案:

答案 0 :(得分:15)

可以在计算机上并排放置许多JRE。

如果在Windows上正确安装了JRE,则每个版本的信息都会存储在注册表中。安装过程在系统路径(%SYSTEMROOT%\ System32 )中安装特殊java.exe 。所以你不需要改变PATH,因为这个特殊的java.exe会找到当前的JRE。在命令行中,键入java -version以显示当前安装的jre版本。

使用1.6版本,现在可以选择不同于最后一个的JRE安装而不进行任何注册表修改。

JRE安装在密钥

的注册表中列出
  

HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java运行时环境

采用这个简单的测试类

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

在安装了1.6和1.5的系统上。如果您输入

> java ShowVersion

它可能是1.6 JRE,因为它是最后一次安装的。

要强制使用1.5 JRE,请使用此命令行。

> java -version:"1.5" ShowVersion

如果字节码与给定的JRE不兼容,那么它当然不会起作用。

参考:technote java 6

您始终可以提供使用特定安装的完整路径。以这种方式启动JVM根本不使用注册表设置。

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

来源:Select a particular JRE from the command line

答案 1 :(得分:2)

回答“实际”问题:

  

另一件奇怪的事情是,我试图检查环境   变量设置,它没有说jdk1.7.0_09。

这里发生的是您安装了jdk1.7.0_07然后自动升级它。发生这种情况时,它仍然使用您最初安装的旧文件夹名称。

安装Java之后,我通常会复制JDK目录并用版本号命名。然后,我可以像这样直接调用某个java:

@echo off
:: testjava.bat
set JAVA_HOME=C:\JDK1.x.xx
set PATH=%JAVA_HOME%\bin;%PATH%;.
java -version
pause

所以,我的建议是设置你的JAVA_HOME系统变量和PATH变量,如上所示。这将覆盖系统上的所有内容,以便您选择的JDK是JRE的默认值。

答案 2 :(得分:2)

评论中的AppData路径不在您的路径上(据推测,无论如何),因此可能不是它正在使用的路径。不幸的是,Windows上没有which命令。

如果您编辑路径并将C:\Program Files\Java\bin目录移动到列表的最开头并仍然打印1.7.0_09,那么您的JDK7u7文件夹中就会出现JDK7u9。如果没有,请浏览到路径上的所有其他目录并逐个打开它们,直到找到相应的java文件。幸运的是,你的路径 比我的短。

请注意:

> java -version

它也可能会查找java.bat和其他非exe扩展程序,因此在您搜索路径时请留意这一点。尝试运行:

> java.exe -version

这样你知道你正在寻找exe文件。

你可以尝试的最后一件事:

> "C:\Program Files\Java\jdk1.7.0_07\bin\java" -version

如果这返回1.7.0_09,那么发生了一些事情,就地发生了更新你的JDK,这不应该发生,AFAIK(但我可能是错的)。

答案 3 :(得分:2)

添加以下内容可解决您的问题:

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

此外,如果它不起作用,则表示您已为多个Java版本设置PATH,请仅包含最新版本,并从PATH变量中删除所有版本。