2009-11-05 121 views
103

我试图用Windows命令提示符使用javac,但它不工作。javac在Windows命令提示符下不工作

在环境路径变量的末尾添加“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \”目录后,java命令正常工作,但使用javac给了我以下错误:

'javac' is not recognized as an internal or external command, operable program or batch file. 

任何想法?谢谢。

回答

127

如果您在命令提示符处于打开状态时将其添加到控制面板中,则不会影响当前的命令提示符。你需要退出并重新打开或者干脆:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin" 

通过检查的方式,执行:

echo %path% 

从命令提示符,让我们知道它是什么。

否则,确保有在该目录中的javac通过尝试:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe" 
从命令提示符

。你也可以告诉哪个可执行(如果有的话)与所述命令中使用:

for %i in (javac.exe) do @echo %~$PATH:i 

这类似于在某些UNIX型操作系统的which和/或whence命令的巧妙的方法。

+11

啊,是的,所有我需要做的就是重新打开命令提示符,它工作得很好,谢谢! – Domenic 2009-11-05 06:02:54

+1

+1。 “(%)我在(java.exe)做@echo%〜$ PATH:我”只是救了我一天。我只是一个偶尔的Windows用户,我只是不知道可能有另一个隐藏的java.exe在c:\ windows \ system :) – 2010-08-19 18:02:22

+1

上述设置的路径命令不适用于我在Windows 7下。我不得不使用set path =“%path%; c:\ program files \ java \ jdk1.6.0_16 \ bin。这是没有引号!我不熟悉Windows命令行,但似乎引号保留。 %path%将使它完全无法使用 – user716468 2013-01-06 07:35:25

-7

将其作为“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin”。删除反斜杠将工作

+1

我不认为这是正确的。我可以将我的路径设置为“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \”(带有斜线),它仍然可以正常工作。 – paxdiablo 2009-11-05 05:43:28

2

我不得不这样做是为了得到这个在Windows 7 64

打开一个命令提示符(cmd.exe的)和工作类型:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin 

确保您重新打开所有正在运行的命令提示符窗口以更新环境变量。

+1

我想在这里取消设置类路径会更好。我不会使用CLASSPATH变量,尤其是不在Windows上它是全局的,并影响多个JRE ... – eckes 2011-11-16 04:02:28

5

我知道这可能不是你的具体错误,但我曾经在我的路径有一个领先的空间和Java会工作,但javac不会。

对于它的价值,我提供了一些忠告:“仔细检查你的路径”。

83

Windows操作系统搜索PATH环境变量中列出的当前目录和目录中的可执行程序。 JDK的程序(例如Java编译器javac.exe和Java运行时java.exe)驻留在目录“\ bin”(其中表示JDK安装目录,例如C:\ Program Files \ Java \ jdk1.8.0_xx)。您需要在PATH中包含“\ bin”目录。

要在Windows XP/VISTA/7/8编辑PATH环境变量:

  1. 控制面板⇒系统⇒高级系统设置

  2. 切换到 “高级” 选项卡⇒环境变量

  3. 在 “系统变量”,向下滚动,选择 “PATH” ⇒编辑

((现在的阅读,然后再继续下面的3倍,没有UNDO))

在 “变量值” 字段中插入 “C:\ Program Files文件\的Java \ jdk1.8.0_xx \ BIN”(将xx替换为升级编号并验证这是您的JDK的二进制目录!!!)在所有现有目录的前面,后跟分号(;),将JDK的二进制目录与其他现有目录分开。 不要删除任何现有的条目;否则,某些现有应用程序可能无法运行。

Variable name : PATH 
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...] 

Screenshot

+1

这是一个为我工作的。谢谢 ! – WhySoSerious 2013-05-13 18:16:02

+4

+1为大写“PATH” – 2013-06-12 12:53:32

+0

对于第4步。我发现我不得不选择jre ,但jdk 。然后一切工作正常。 – morganw09dev 2013-08-29 01:06:59

-3

,当我试图做的.java到的.class命令javac的没有工作。我通过转到C:\ Program Files文件(x86)\ Java \ jdk1.7.0_04 \ bin得到它的工作,并且当我在该目录中时,我键入了Javac.exe C \ Test \ test.java并且它使用该类战术。试试看。

-1

“; C:\ Program Files \ Java \ jdk1.6.0 \ bin”有时您可能会忘记将分号放在最后一个现有路径上。

1

好吧,这不可能是这种情况,但我们很多人在过去犯过这个错误,其中很少人还没有意识到这一点,也就是说,每次你追加任何路径(任何路径)环境变量,你可能会在“分号”之后立即打开空格键(正如你通常在“时间段”之后键入编辑器一样)。

这将在路径中创建一个前导空间,例如“C:\ Program Files \ Java \ jdk1.6.0 \ bin”,因此系统将找不到“javac.exe”。

4

尝试解决此:http://techdem.centerkey.com/2009/05/javahome-command-script.html

这些是更强大的改变 - 就像当你升级JDK或JRE,因为没有硬编码的路径。

的快速解决方案(如果你不想阅读博客)是

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i 
C:\>set PATH=%PATH%;%JAVA_HOME% 

然后,您可以将这些行添加到启动/登录脚本。

+2

为了调用javac,我必须使用“set PATH =%PATH%;%JAVA_HOME%\ bin”(注意添加的\ bin)。 – user31389 2016-01-01 20:55:19

27

长谷歌之后,我才知道的javac.exe必须是内JDK(C:\ Program Files文件\的Java \ JDK(版本号)\ BIN)内部没有JRE(C:\ PROGRAM文件(x86)\ Java \ jre7 \ bin)“JRE没有附带编译器,它只是一个Java运行时环境,您需要的是Java开发工具包。“为了使用编译器javac的

如果你是里面的jre

指向斌为了在cmd以使用javac的javac将无法正常工作,JDK必须安装在您的系统...

对于javac的路径

路径= C:\ Program Files文件(x86)的\的Java \ jre7 \ BIN这是错误的

路径= C:\ Program Files文件\的Java \ JDK(版本号)\ BIN这是正确的

确保 “的javac.exe” 是你“C里面:\ Program Files文件\的Java \ JDK(版本数)\ BIN”

不要误会与JRE和JDK两者是完全不同的

如果你没有JDK请下载此链接http://www.oracle.com/technetwork/java/javase/downloads/index.html

基准线为JDK VS JRE What is the difference between JDK and JRE?

+4

这是非常好的建议 - – user26676 2014-05-20 11:11:53

0

我有这个标题中发布的同样的问题。 Java会工作,但javac不会在Windows命令提示符下(cmd.exe)。

对我来说,简单地说,在我的%PATH%环境变量的末尾添加C:\Program Files\Java\jdk1.8.0\bin时,我放置了一个空格。
删除;和下一个文件路径之间的空格。

1

更改文件夹“jdk1.7.0_45”“jdk1_7_0_60”并更新Windows环境中的路径。否则,路径会忽略代表隐藏文件的前面的点,因此该文件夹不会显示在PATH字符串中。

0

我所面临的相同问题是Java的会工作,但javac的不会在Windows 8

的问题发生,因为我忘了在路径名的末尾删除'>'一个命令提示符,即它是这样的:

C:\Program Files\Java\jdk*\bin> 

它被假设是这样的:

C:\Program Files\Java\jdk*\bin 
0

的路径将只为管理员帐户设置。因此,以管理员身份启动命令提示符非常重要,如果您还没有。

0

确保您不允许Path变量中路径之间的空格(空格)。我的问题是我有空白,我相信Windows将其视为一个NULL,并没有阅读我的Java路径。

0

我很欣赏这是一个古老的问题,但我的解决方案不是在这里发布的答案,以便在其他人尝试其余的情况下发布。

就我而言,先前安装的Java JRE(在ProgramData/Oracle/Java中)在路径变量列表顶部有一个路径变量。该“Oracle”路径的内容有一个java.exe,但不是一个javac.exe。 我将完整的JDK路径添加到路径变量列表顶部,位于“Oracle”路径变量之前,然后选择javac.exe和java。

0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i 
set JAVA_HOME 

this解决方案工作对我

+0

我建议直接添加更多注释到您的答案,而不是仅仅提供一个链接:链接可能会被破坏。最好的祝福 – YakovL 2017-09-02 07:07:55