当我输入 "java -version" 时,它是从哪里提取信息的?

When I type "java -version", where is it pulling that information from?

users-MacBook-Pro:~ user$ java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

如上所示,当我输入 "java -version" 它 returns 这个信息。当我按下回车键然后弹出此信息时 bash 中发生了什么?

看起来信息来自 /sun/misc/Version.class 在 rt.jar 文件中。当您 运行 java -version 时,我无法追踪 JVM 获取此信息的路径,但我们正在寻找的文字字符串肯定存在于 class .. . 而不是 java 二进制文件本身。

(这是在装有 OpenJDK Java 8 的 Linux 机器上)

根据您的环境路径变量,命令行将查找可执行文件并 运行 使用参数 -version

不确定 Mac,但在 Linux "which java" 应该给你 bash 正在使用的可执行文件的路径

如果您已将 java 安装到您的计算机中,并将您的 java 路径设置为任何 Operating System 上的环境变量并键入

java -version //command to use show Installed Java Version on Console.

您将获得已安装的 java 版本作为输出(从您的示例中复制)。 这里 java 用于调用 jvm-version 是 Option.

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

如果你的机器没有 jave 那么它会显示像

这样的结果
java is not recognized as an internal or external command.

java 命令还有更多可用选项。一些选项是

-d32
-d64
-server
-hotspot
 ...... // more than 20 options are available.

These options have a special purpose to gather different kind of Information regading System .