java -version 和 javac -version 显示不同的版本

标签 java

我的 java 7java 8 都安装在我的 Windows 系统的 C:\Program Files\Java

在环境的路径中我像这样指定了java 7的路径。

%JAVA_HOME%/bin 其中 JAVA_HOME = C:\Program Files\Java\jdk1.7.0_17

但是当我输入 javac -version 时,它会显示 javac 1.7.0_17 这很有意义

但是当我执行 java -version 时,它会显示

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

enter image description here

知道这里可能存在什么问题吗?

编辑安装的文件夹: enter image description here

还有一件事 echo %PATH% 只有一个 JDK 出现,即 java 7 而没有出现JRE 在里面找到。

最佳答案

问题的出现很可能是因为您的 PATH 中有一个 JRE,位于 JDK 之前。这通常发生在我们在 PATH 中添加 JDK 并且不删除之前添加的 JRE 时。因此,当您执行 java 时,它指向 JRE,而当您执行 javac 时,它指向另一个版本/JDK(因为 JRE 没有 javac在里面)

如果您的路径中没有任何 JRE,那么您可以复制您的 %JAVA_HOME% 并将其首先粘贴到您的路径变量中(确保它在 system32路径)。

这可行的一个可能原因是explained in this answer :

JRE also puts a java.exe to c:\Windows\System32, that's how first command is resolved. Second command is resolved by the C:\Program Files\Java\jdk1.7.0_02\bin entry in your PATH variable. If (and when) you are developing from the command prompt, you have to adjust the PATH variable so that C:\Program Files\Java\jdk1.7.0_02\bin is before c:\Windows\System32.

关于java -version 和 javac -version 显示不同的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25074017/

相关文章:

java - 如何在 Java 中引用外部库?

java - 是否可以将特定类型的不可变集绑定(bind)到 Guice 中的实例?

Java Paint 程序绘制形状

java - 简单的 Java Sound Applet 无法工作! ARG!

java - 如何切换 if 和 else 语句来尝试和捕获

java - 使线程以正确的方式工作

java - 从内部匿名类引用匿名类的外部实例

java - Java 中 boolean 动词的变量和方法命名约定?

java - 使用 JNDI 和最小密码年龄在 AD 中创建用户帐户

java - 从java程序内部执行linux命令