javac不能在Windows命令提示符下工作

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

在将“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \”目录添加到环境pathvariables的末尾之后,java命令正常工作,但是使用javac给了我下面的错误:

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

有任何想法吗? 谢谢。

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

 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 

这是类似于某些UNIXtypes操作系统中的which命令和/或which命令的巧妙技巧。

Windows操作系统会searchPATH环境variables中列出的当前目录和目录中的可执行程序。 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环境variables:

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

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

  3. 在“系统variables”中,向下滚动select“PATH”⇒编辑

((现在在继续阅读以下3次, 没有UNDO ))

在“variables值”字段中,插入“c:\ Program Files \ Java \ jdk1.8.0_xx \ bin”(将xxreplace为升级编号,并且VERIFY表示这是您的JDK的二进制目录!!!)目录,后跟一个分号(;),将JDK的二进制目录与其余的现有目录分开。 不要删除任何现有的条目; 否则,某些现有应用程序可能无法运行。

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

截图

经过一段长时间的Google后,我才知道javac.exe必须位于JDK (C:\ Program Files \ Java \ jdk(版本号)\ bin)内部,而不是在JRE (C:\ Program Files(x86)\ Java \ jre7 \ bin) “JRE没有附带一个编译器,它(JRE)只是一个Java运行时环境,你需要的是Java开发工具包。 为了使用编译器javac

如果您在jre中指向bin,javac将不起作用

为了在cmd中使用javac,必须在您的系统中安装JDK …

对于javacpath

path= C:\ Program Files文件(x86)\ Java \ jre7 \ bin这是错误的

path = 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/jdk7-downloads-1880260.html

JDK和JRE的引用线程JDK和JRE有什么区别?

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

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

试试这里的解决scheme: http : //techdem.centerkey.com/2009/05/javahome-command-script.html

这些更改更健壮 – 就像升级JDK或JRE时一样,因为没有硬编码path。

快速解决scheme(如果你不想读博客)是

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

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

我只需要做到这一点,以使其在Windows 7 64上工作。

打开命令提示符(cmd.exe),然后键入:

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

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

好吧,事情不总是这样,但是我们中的许多人在过去犯过这个错误,很less有人还没有意识到这一点,也就是说,每当你追加任何环境variables的path(任何path)时,你在“分号”之后,你可能会碰到空格键(正如你通常在“时间段”之后键入编辑器那样)。

这将在path中创build一个前导空间,例如“C:\ Program Files \ Java \ jdk1.6.0 \ bin”,因此系统将不会find“javac.exe”。

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

我遇到了java的工作,但javac不会在Windows 8中的cmd提示完全相同的问题。

发生这个问题是因为我忘记在path名的末尾删除'>' ,即它是这样的:

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

假设它是这样的:

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

path只会设置为pipe理员帐户。 因此,以pipe理员身份启动命令提示符非常重要,如果您还不是。

确保Pathvariables中的path之间不允许有空格(空格)。 我的问题是我有空白,我相信Windows把它当作一个NULL,并没有读取我的path为Java。

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

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

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

就我而言,以前安装的Java JRE(在ProgramData / Oracle / Java中)在pathvariables列表的顶部有一个pathvariables。 该“Oracle”path的内容有一个java.exe,但不是一个javac.exe。 我将完整的JDKpath添加到pathvariables列表的顶部,位于“Oracle”pathvariables之前,然后selectjavac.exe和java。

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

这个解决scheme对我有用

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

当我试图使.java .class的命令Javac没有工作。 我得到它的工作转到C:\ Program Files文件(x86)\ Java \ jdk1.7.0_04 \ bin,当我在那个目录上时,我键入Javac.exe C \ Test \ test.java,它使类战术。 试试看。

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