ChatGPT解决这个技术问题 Extra ChatGPT

javac在Windows命令提示符下不起作用

我正在尝试将 javac 与 Windows 命令提示符一起使用,但它不起作用。

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

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


p
paxdiablo

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

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。 “for %i in (java.exe) do @echo %~$PATH:i”刚刚拯救了我的一天。我只是偶尔的 Windows 用户,我只是不知道 c:\windows\system 中可能还有另一个隐藏的 java.exe :)
上面的set path命令在windows 7下对我不起作用。我不得不使用set path="%path%;c:\program files\java\jdk1.6.0_16\bin。那是没有引号的!我不熟悉使用 windows 命令行,但似乎保留了引号。因此,将它们放在 %path% 中将使其完全无法使用。
@user716468,有一种 GUI 方法可以在 Windows 中而不是命令行中执行此操作。如果您使用的是 Windows 7,只需在开始菜单搜索中键入 var 并单击编辑环境变量。如果您使用的是 Windows XP,请右键单击我的电脑,单击属性,转到高级选项卡,然后单击底部的环境变量按钮。在那里您可以找到两个列表框。从底部列表框中找出名称为 PATH 的那个,然后单击“编辑”。现在将路径附加到您的 JDK,并以分号开头。你完成了!
最近的 Windows 命令行中还有一个“where”命令
m
mike

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 环境变量:

控制面板⇒系统⇒高级系统设置切换到“高级”选项卡⇒环境变量在“系统变量”中,向下滚动以选择“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...]

https://i.stack.imgur.com/7jqLF.png


对于第 4 步。我发现我必须选择的不是 jre,而是 jdk。然后一切正常。
干净整洁!最佳答案。为我工作。
就我而言,对于第 4 步,我打开了 jdk。本质上,我为 PATH 设置了这个:C:\Program Files\Java\jdk1.7.0_67\bin。 javac.exe 不在 jre 中,而是在 jdk 中。
为我工作:)
T
TechDog

经过长时间的谷歌,我知道 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 What is the difference between JDK and JRE? 的参考线程


S
Sam

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

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


M
Malay Desai

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

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


J
Jason

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

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


为了像这样调用 javac,我必须使用“set PATH=%PATH%;%JAVA_HOME%\bin”(注意添加的 \bin)。
e
eckes

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

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

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

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


我想在这里取消设置类路径更好。我不会使用 CLASSPATH 变量,尤其是在它是全局变量并影响多个 JRE 的 Windows 上...
N
NewDev

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


S
Sundararajan wasuvan

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


J
Joël Salamin

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

出现问题是因为忘记去掉路径名末尾的'>',即是这样的:

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

它应该是这样的:

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

佚名

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


T
TResponse

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


S
Siguza

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

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


N
Neil

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

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


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

this 解决方案对我有用


我建议直接在您的答案中添加更多注释,而不仅仅是提供链接:链接可能会损坏。此致
S
Someone

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


v
valli

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


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