【发布时间】:2015-02-26 17:59:46
【问题描述】:
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 只是到最后一个的符号链接。
所以现在的问题是为什么我的System32 文件夹中的java.exe 会发生这种情况? (我的结局是从System32 文件夹中删除java.exe,但我想先了解发生了什么。)
更新 2
使用进程监视器,我可以看到,当我在有问题的C:\Windows\System32\java.exe 上运行任一命令时,这是正在运行的可执行文件(请参阅它在C:\Windows\System32\java.exe 上调用LoadImage 的屏幕截图)。两者中也有一些对C:\Windows\SysWOW64\java.exe 的引用。我不知道为什么。
另请注意,我的注册表似乎是正确的。当前版本是 1.8。
另外一点,C:\Windows\System32\java.exe 上的时间戳是在我知道我安装了 JRE 的那一天。
【问题讨论】:
-
我最初的想法是这个Java的安装是不正确的。我的第二个问题是,也许 java.exe 足够聪明,可以只检查 Windows 注册表而不是“它本身”,它会报告那里的内容。检查您的 JavaSoft 密钥以查看此系统上已安装的 64 位 JRE。我只是更仔细地查看了您的帖子,发现您正在用完 System32,尽管它报告的是 64 位服务器 VM。确保这是你没有运行的那个。
-
@jdv 我查看了注册表并粘贴了上面的屏幕截图。对我来说似乎没问题。我错过了什么吗?而 System32 就是它正在运行的那个。当我明白为什么这个生物报告的版本号不同时,我将删除它。
-
谢谢。这肯定只是一个真正的离群值猜测,但至少我们已经排除了它。如果使用两个调用的完整路径名运行 java 得到相同的结果,我没有明智的解释。
-
我没有答案。事实证明,“系统”虚拟机只是指向 Windows 注册表中最新虚拟机的指针。系统 VM 也不会通过更新安装进行更新。我还在阅读最新的 Java 8 完整版本安装了 REMOVE 两个系统可执行文件。因此,我们在这里看到的可能与这些可执行文件在给定不同选项和/或多个 Java 8 安装或更新运行的人工制品时如何找到“最新”有关,从而使这些系统可执行文件处于奇怪的状态。我没有真正的答案。这是一个笨蛋。
标签: java