java - 多个版本的 "JDK",执行哪个 "java.exe"文件?

标签 java

我安装了多个版本的JDK,包括1.61.71.8

我想知道当我运行需要JRE 的软件时,执行的是哪个版本的java.exe。我做了一些测试,见下文:

测试:

cmd.exe 命令: echo %java_home%
打印: java 版本“1.8.0_31”


cmd.exe 命令: java -version
打印: java 版本“1.8.0_31”


然后查看HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.8中的注册表,得到javaHome键值
结果: C:\Program Files\Java\jdk1.8.0_31


java 代码: System.out.println(System.getProperty("java.home"));
打印: C:\Program Files (x86)\Java\jdk1.7.0_15\jre


最后,我打开任务管理器,搜索java.exe进程,找到java.exe目录在:
结果: C:\Program Files (x86)\Java\jdk1.7.0_15\bin


问题:

我很困惑计算机选择了哪个 jave.exe 文件。你能帮忙吗?

最佳答案

被动方法

您可能想要 where windows 命令行实用程序的功能;假设您的 %PATH%

中只有一个 java.exe

尝试:

where java.exe

如果你有多个版本的 java pin 你的 %PATH% 这将返回多个值。 (不幸的是)

主动方法

这样设置你的环境:

让您的 PATH 环境变量指向c:\tools\java\default

将所有jre存储在一个文件夹中

C:\tools\Java\JRE_1.6
C:\tools\Java\JRE_1.7
C:\tools\Java\JRE_1.8

然后打开命令提示符并在 C:\tools\Java\ 中执行

junction default JRE_1.6

这将创建一个 junction (这或多或少像一个符号 lync)。

通过这种方式,您将始终在 c:\tools\java\default 中拥有默认的 java。 如果您随后需要将默认 java 更改为您只需要执行的 1.8 版本

junction -d default
junction default JRE_1.8   

关于java - 多个版本的 "JDK",执行哪个 "java.exe"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392210/

相关文章:

java - 返回一个数字在数组中出现的次数?

java - 程序从 switch java 中断

java.lang.instrument ASSERTION FAILED 为 spring boot 执行器添加依赖项后

java - 通用容器工厂

java - Android webview +javascript 未在 android 4.0.x,3.x 中显示输出

Java - try/catch 无限重复

java - 如何使用 dagger 2 才能使用共享首选项的抽象表示?

java - TestNG 错误在类路径中找不到类

java - Netbeans API : How to save a file, 或当前项目中的所有文件?

java - Android 开发和 TDD