Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java windows中的JDK7问题_Java_Java 7 - Fatal编程技术网

Java windows中的JDK7问题

Java windows中的JDK7问题,java,java-7,Java,Java 7,我在windows中安装了JDK7。我没有做更多的事情,不要限定路径和类路径,这是我的路径环境: 可以找到我没有包含jdk安装目录。但当我在命令行中运行“java-version”命令时,我看到: 但当我运行“javac-version”时,它无法工作,“javac”命令未定义。如果我没有包括我的jdk安装目录,java和javac命令肯定都不能工作,但是在jdk7中,“java”命令可以工作,“javac”命令不能工作,为了解决问题,我可以在path中包括jdk安装目录,但我想知道问题的原

我在windows中安装了JDK7。我没有做更多的事情,不要限定路径和类路径,这是我的路径环境:

可以找到我没有包含jdk安装目录。但当我在命令行中运行“java-version”命令时,我看到:


但当我运行“javac-version”时,它无法工作,“javac”命令未定义。如果我没有包括我的jdk安装目录,java和javac命令肯定都不能工作,但是在jdk7中,“java”命令可以工作,“javac”命令不能工作,为了解决问题,我可以在path中包括jdk安装目录,但我想知道问题的原因,jdk7和pre-version之间有区别吗?

为了使用像“javac”这样的命令,您应该在JDK本地安装的路径中有\bin目录

您可能在Windows\system32中有java.exe,但没有javac

java.exe
也是JRE的一部分,而
javac.exe
只是JDK的一部分我认为,当您安装环境时,设置的路径指向JRE bin,而不是JDK bin。JRE不包含javac可执行文件。将JDK bin插入环境路径将解决此问题,因为windows现在将扫描该文件夹/位置以搜索名为javac.exe的可执行文件。您需要将java/bin目录添加到Path环境变量:

比如:
C:\Program Files\Java\jdk1.7.0_45\bin

JDK还安装了一个公共JRE。公共JRE将
java.exe
存根添加到
\windows\system32
目录。存根读取注册表以找出要执行的real
java.exe


其他JDK命令没有得到同样的处理,需要JDK的
bin
目录位于系统路径上,最好在
\windows\system32
条目之前,以保持一致性。

或者在编译或编写ant/maven/gradle/等脚本时使用完整路径。但是为什么“java”命令可以工作呢?它也在\bin目录中,我没有指定之前有人提到的,安装JRE时,java.exe通常会复制到某些windows目录中;这可能就是对你有用的东西。但是,jdk文件(例如编译器或jconsole.exe)不会复制到其中Windows安装程序会将
java.exe
放入
c:\Windows\System
(或
System32
,具体取决于它是32位还是64位JVM)。因此,
java
在您的道路上,但是不是
javac
您是否设置了JAVA_HOME变量?我建议使用IDE而不是手动执行所有操作。安装JDK时,它不会将任何javac.exe放在system32路径中。我没有说它是在安装后放在那里的。+1令人惊讶的是,有些人在回答问题之前竟然可以阅读问题。@Njol怎么样我的答案与此不同?@KorayTugay您的答案并没有真正回答这个问题:“我想知道问题的原因”-提问者基本上知道他的路径中的一个目录中有一些java.exe,但没有javac.exe。