java -version
和 java -fullversion
有什么区别?
这两个在我的机器上好像没有对齐
C:\Users\kmort>java -fullversion
java full version "1.8.0_20-b26"
C:\Users\kmort>java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
This link (at the bottom)似乎表明 fullversion
只包含内部版本号。如果这是真的,那么当我运行这两个时我最终会得到不同的答案怎么办?
请注意 this documentation忽略完全引用 fullversion
。
我在 64 位 Windows 7 上运行。如果有帮助,这里是我在我的机器上安装的 JDK 和 JRE 的屏幕截图。
更新
当我运行 Window 的 where
命令时,我得到以下信息:
C:\Users\kmort>where java
C:\Windows\System32\java.exe
C:\ProgramData\Oracle\Java\javapath\java.exe
C:\Program Files\Java\jdk1.8.0_25\bin\java.exe
问题出在 System32
中的 java.exe
。如果我将该名称重命名为其他名称,一切都会按预期进行。而 Oracle 只是指向最后一个的符号链接(symbolic link)。
那么现在的问题是,为什么我的 System32
文件夹中的 java.exe
会发生这种情况? (我的最终目标是从 System32
文件夹中删除 java.exe
,但我想先了解发生了什么。)
更新 2
使用 Process Monitor,我可以看到,当我在有问题的 C:\Windows\System32\java.exe
上运行任一命令时,这是正在运行的可执行文件(请参阅它调用的屏幕截图LoadImage
在 C:\Windows\System32\java.exe
上)。它们中还有一些对 C:\Windows\SysWOW64\java.exe
的引用。我不确定为什么。
另请注意,我的注册表似乎是正确的。当前版本是 1.8。
另外请注意,C:\Windows\System32\java.exe
上的时间戳是在我知道我安装了 JRE 的那一天。
最佳答案
经过多次反复,看起来这是 Java“更新”安装的副作用,没有更新系统目录中的 Java 可执行文件。
曾几何时,这台机器上安装了 1.8.0_20-b26,它尽职尽责地放下了一个完整的 JAVA_HOME,这个版本的注册表项,更新了注册表中的最新 VM,并且还把/special/java %WinSysDir% 中的 .exe
在某些时候,JVM 已更新,可能是通过 Java 更新程序工具,但可能没有使用完整的安装程序(OP 可以确认。)
这会创建一个新的 JAVA_HOME,更新注册表,甚至可能删除旧的 _20 安装。但是,更重要的是:它没有删除 %WinSysDir% 中的 java.exe
@kmort 在可执行文件上运行 POSIX 字符串,发现“1.8.0_20-b26”确实隐藏在那个旧的可执行文件中。
所以,对于 -version 选项,它会检查注册表以获取最新的 JVM 并使用选项 调用它(或者只是从注册表返回 FullVersion——我们不知道直到我们跟踪系统调用) [它似乎实际上调用了可执行文件 --jdv]。但是对于 -fullversion 它只会返回可执行文件中的静态字符串!
我怀疑 -version 可以采用 optarg 这一事实意味着对这些选项的处理是完全不同的。
解决方案是:
只需删除 %WinSysDir% 中的 java.exe
接受它,因为它可能是无害的(除非 -version 处理实际上调用了不同的 JVM,在这种情况下,所有的赌注都没有了)
使用来自 Oracle 的最新 MSI 从头开始重新安装 Java 8。
(3) 应该替换 %WinSysDir% 中的 java.exe(以及 WOW64 系统 java.exe)。 (1) 可能完全没问题。 (2) 如果 -version 导致 java.exe 偏离并调用不是最新的真实 JRE,则可能是一个错误。
关于java -version 与 java -fullversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749535/