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)
这个链接(在底部)似乎表明fullversion
只包含构建号。如果是这样,为什么当我运行这两个时会得到不同的答案?
请注意,此文档完全没有提到fullversion
。
我正在运行64位Windows 7。如果有帮助的话,这里是我机器上安装的JDK和JRE的截图。
更新当我运行Windows的
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 的那个只是指向最后一个的符号链接。
现在的问题是,为什么我的 System32
文件夹中有一个 java.exe
会导致这种情况?(我的最终目标是从 System32
文件夹中删除 java.exe
,但我想先了解发生了什么。)
更新2
使用Process Monitor,我可以看到当我在有问题的C:\Windows\System32\java.exe上运行任一命令时,这是所运行的可执行文件(请参见其调用C:\Windows\System32\java.exe上的LoadImage的截图)。两者中也有几个对C:\Windows\SysWOW64\java.exe的引用。我不确定原因。 请注意,我的注册表似乎是正确的。Currentversion为1.8。 另外需要注意的是,
C:\Windows\System32\java.exe
的时间戳是我知道我安装JRE的那一天。