18

我最近检查了我的 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%\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

只是想让你们知道它以某种方式自动变成了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

4 回答 4

18

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

如果在 Windows 上正确安装了 JRE,则有关每个版本的信息都存储在注册表中。安装过程会在系统 PATH ( %SYSTEMROOT%\System32 )中安装一个特殊的 java.exe 。所以你不需要改变你的路径,因为这个特殊的 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 不兼容,那么 .. 它当然不会工作。

参考: 技术说明 java 6

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

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

source :从命令行中选择一个特定的 JRE

于 2012-12-05T23:31:13.893 回答
5

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

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

此外,如果它不起作用,这意味着您已经PATH为多个 java 版本设置了,请仅包含最新版本并从PATH变量中删除所有版本。

于 2017-03-27T08:50:47.863 回答
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 的默认值。

于 2012-12-05T23:34:00.890 回答
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(但我可能是错的)。

于 2012-12-05T23:43:09.233 回答