135

我正在尝试使用javacwindows 命令提示符,但它不起作用。

将目录添加到环境变量"C:\Program Files\Java\jdk1.6.0_16\bin\"的末尾后,该命令可以正常工作,但是使用会给我以下错误:PATHjavajavac

'javac' 不是内部或外部命令、可运行程序或批处理文件。

4

17 回答 17

164

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

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 类型操作系统中的whichand/or命令。whence

于 2009-11-05T05:29:41.853 回答
87

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 次,没有撤消))

在“变量值”字段中,插入“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...]

截屏

于 2012-04-06T17:07:41.877 回答
37

经过长时间的谷歌,我知道 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...

对于 javac 路径

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

path = C:\Program Files\Java\jdk(版本号)\bin 这是正确的

确保“javac.exe”在您的“C:\Program Files\Java\jdk(version number)\bin”中

不要混淆 JRE 和 JDK 两者是完全不同的

如果您没有 JDK,请从此链接下载

https://jdk.java.net/

或者

http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK VS JRE 的参考线程 JDK 和 JRE 有什么区别?

于 2013-12-31T15:06:54.180 回答
6

我知道这可能不是你的具体错误,但我曾经在我的路径中有一个前导空格,java 可以工作,但 javac 不能。

对于它的价值,我提供了明智的建议:“仔细检查你的路径”。

于 2012-04-03T10:31:29.017 回答
5

好吧,情况并非总是如此,但是我们中的许多人过去都犯过这个错误,而且其中很少有人仍然没有意识到这一点,也就是说,每次您附加任何环境变量的路径(任何路径)时,您' 可能会在“分号”之后立即点击空格键(就像您在编辑器中键入时通常在“句点”之后一样)。

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

于 2013-08-03T07:32:29.447 回答
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%

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

于 2013-11-04T15:10:50.257 回答
4

我只需要这样做才能让它在 Windows 7 64 上运行。

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

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

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

于 2011-11-16T03:10:43.090 回答
2

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

于 2014-06-13T03:21:29.807 回答
0

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

于 2013-05-09T15:48:12.573 回答
0

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

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

于 2014-03-31T15:49:05.170 回答
0

我遇到了与 java 可以工作但 javac 在 Windows 8 中的 cmd 提示符下无法工作的完全相同的问题。

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

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

它应该是这样的:

C:\Program Files\Java\jdk*\bin
于 2014-09-15T11:24:09.177 回答
0

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

于 2015-01-08T15:02:16.913 回答
0

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

于 2015-01-27T02:05:35.540 回答
0

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

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

于 2016-09-27T22:10:03.363 回答
0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

这个解决方案对我有用

于 2017-09-02T06:45:06.263 回答
-3

当我尝试将 .java 设置为 .class 时,Javac 命令不起作用。我通过转到 C:\Program Files (x86)\Java\jdk1.7.0_04\bin 让它工作,当我在那个目录上时,我输入了 Javac.exe C\Test\test.java 并用它创建了类战术。试试看。

于 2012-06-12T09:47:08.470 回答
-7

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

于 2009-11-05T05:31:02.240 回答