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


132

我正在尝试javac与Windows命令提示符一起使用,但无法正常工作。

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

无法将“ javac”识别为内部或外部命令,可操作程序或批处理文件。


Answers:


162

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

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
啊,是的,我要做的就是重新打开命令提示符,它工作正常,谢谢!
多梅尼克2009年

1
+1。“对于(java.exe)中的%i执行@echo%〜$ PATH:i”刚刚保存了我的一天。我只是Windows的偶尔用户,我只是不知道c:\ windows \ system中可能还有另一个隐藏的java.exe :)
大卫。

1
上面的set path命令在Windows 7下对我不起作用。我不得不使用set path =“%path%; c:\ program files \ java \ jdk1.6.0_16 \ bin。这是没有引号的!我不熟悉与Windows命令行,但似乎保留了引号。因此将它们放在%path%中将使其完全无法使用
user716468 2013年

@ user716468,有一种GUI方法可以在Windows中而不是在命令行中执行此操作。如果您使用的是Windows 7,只需在开始菜单搜索中键入var,然后单击“编辑环境变量”。如果您使用的是Windows XP,请右键单击“我的电脑”,单击“属性”,转到“高级”选项卡,然后单击底部的“环境变量”按钮。在那里您可以找到两个列表框。从底部的列表框中找到名称为PATH的名称,然后单击“编辑”。现在,将路径附加到您的JDK,并在前面加上分号。你完成了!
fz_salam

最近的Windows命令行中也有一个“ where”命令
2014年

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”⇒编辑

((现在请先阅读以下三遍,然后再进行还原

在“变量值”字段中,在所有现有文件的前面插入“ 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...]

屏幕截图


对于步骤4,我发现我必须选择的不是jre <yournumber>,而是jdk <yournumber>。然后其他所有工作都很好。
Morgan Kenyon

干净整洁!最佳答案。为我工作。
M_R_K 2014年

就我而言,对于步骤4,我打开了jdk。在本质上,我在PATH中有此文件:C:\ Program Files \ Java \ jdk1.7.0_67 \ bin。javac.exe不在jre中,而在jdk中。
sedeh 2014年


34

经过很长一段时间的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。

对于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请从此链接下载

https://jdk.java.net/

要么

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

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


6

我知道这可能不是您的特定错误,但是我曾经在我的路径中有一个前导空格,并且Java可以工作,但javac不能。

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


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%

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


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

4

我只需要这样做就可以在Windows 7 64上正常工作。

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

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

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


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

4

好的,情况并非总是如此,但是我们中的许多人过去曾经犯过此错误,其中很少有人仍然不知道它,也就是说,每次您添加任何环境变量的路径(任何路径)时,很有可能会在“分号”之后(如您通常在编辑器中键入“句号”之后一样)击中空格键。

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


2

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



0

我遇到了与Java完全相同的问题,但Windows 8中的cmd提示符下却没有javac。

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

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

应该是这样的:

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

0

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


0

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


0

我在标题中也遇到了同样的问题。Java可以运行,但javac不能在Windows命令提示符(cmd.exe)中使用。

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


0

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

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



-3

当我尝试将.java转换为.class时,Javac命令无效。我通过转到C:\ Program Files(x86)\ Java \ jdk1.7.0_04 \ bin使其工作,当我在该目录中时,我键入Javac.exe C \ Test \ test.java并由此创建了该类战术。试试看。


-7

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


2
我认为那是不对的。我可以将路径设置为“ C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \”(带有斜杠),但仍然可以正常使用。
paxdiablo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.