javac无法在Windows命令提示符下工作

时间:2009-11-05 05:26:37

标签: java windows command-prompt javac

我正在尝试在Windows命令提示符下使用javac,但它无效。

将目录"C:\Program Files\Java\jdk1.6.0_16\bin\"添加到PATH环境变量的末尾后,java命令工作正常,但使用javac会出现以下错误:

  

'javac'未被识别为内部或外部命令,可操作程序或批处理文件。

17 个答案:

答案 0 :(得分:149)

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

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命令的巧妙技巧。

答案 1 :(得分:86)

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. 在“系统变量”中,向下滚动以选择“路径”⇒编辑

  4. ((现在在继续之前阅读以下3次,没有发现))

    在“变量值”字段中,INSERT“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

答案 2 :(得分:32)

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

如果你将bin指向jre

,那么

javac将无效

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

适用于javac路径

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/index.html

JDK VS JRE What is the difference between JDK and JRE?

的参考线程

答案 3 :(得分:6)

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

为了它的价值,我提供了圣人的建议:“仔细检查你的道路。”

答案 4 :(得分:5)

在此尝试解决方案: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%

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

答案 5 :(得分:4)

好吧总是情况不是这样,但我们很多人过去都犯过这个错误,其中很少人仍然没有意识到这一点,即每次你追加任何环境的路径(任何路径)变量,你可能会在“分号”之后立即点击空格键(正如你通常那样,在编辑器中输入“句号”之后)。

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

答案 6 :(得分:3)

我必须这样做才能让它在Windows 7 64上运行。

打开命令提示符(cmd.exe)并键入:

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

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

答案 7 :(得分:2)

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

答案 8 :(得分:0)

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

this解决方案对我有用

答案 9 :(得分:0)

我很欣赏这是一个古老的问题但是我的解决方案不是这里的答案所以发布它以防其他人尝试所有其他的。

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

答案 10 :(得分:0)

确保您不允许在Path变量中的路径之间留出空格(空格)。我的问题是我有空白区域,我相信Windows将其视为NULL并且没有读取我的Java路径。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

我遇到的问题与java完全相同,但javac不会在Windows 8的cmd提示符下出现。

出现问题是因为我忘记删除路径名末尾的'>',即它是这样的:

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

假设是这样的:

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

答案 13 :(得分:0)

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

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

答案 14 :(得分:-1)

“; C:\ Program Files \ Java \ jdk1.6.0 \ bin”有时你可能忘记在最后一条现有路径上加分号。

答案 15 :(得分:-3)

当我试图将.java设为.class命令时,Javac无效。我通过转到C:\ Program Files(x86)\ Java \ jdk1.7.0_04 \ bin来工作,当我在那个目录上时,我键入了Javac.exe C \ Test \ test.java,它使用战术。试试吧。

答案 16 :(得分:-7)

将其命名为“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin”。删除它将起作用的反斜杠