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

pb3s4cty  于 2023-05-05  发布在  Java
关注(0)|答案(4)|浏览(147)

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

5sxhfpxr1#

锁定,本次有disputes about this answer’s content正在解析。它目前不接受新的交互。

在一台计算机上可以并行使用多个JRE。
如果在Windows上正确安装了JRE,则有关每个版本的信息将存储在注册表中。安装过程会在系统PATH(%SYSTEMROOT%\System32)中安装一个特殊的java.exe。所以你不需要改变你的PATH,因为这个特殊的java.exe会找到当前的JRE。在命令行中,键入java -version以显示当前安装的JRE版本。
在1.6版中,现在可以选择与上一个不同的JRE安装,而无需修改任何注册表。
JRE安装列在注册表项中
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
上这个简单的测试课

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"
scyqe7ek

scyqe7ek2#

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

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

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

vjrehmav

vjrehmav3#

注解中的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(但我可能错了)。

iugsix8n

iugsix8n4#

回答“实际”问题:
另一件奇怪的事情是,我试图检查环境变量设置,它没有说任何关于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的默认值。

相关问题