javac在Windows命令提示符下不起作用
Posted
技术标签:
【中文标题】javac在Windows命令提示符下不起作用【英文标题】:javac not working in windows command prompt 【发布时间】:2010-12-13 07:21:00 【问题描述】:我正在尝试在 Windows 命令提示符下使用javac
,但它不起作用。
将目录"C:\Program Files\Java\jdk1.6.0_16\bin\"
添加到PATH
环境变量的末尾后,java
命令可以正常工作,但使用javac
会出现以下错误:
'javac' 不是内部或外部命令、可运行程序或批处理文件。
【问题讨论】:
javac is not recognized as an internal or external command, operable program or batch file的可能重复 【参考方案1】:如果您在命令提示符打开时将其添加到控制面板中,则不会影响您当前的命令提示符。您需要退出并重新打开,或者干脆这样做:
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 的那个,然后单击 Edit。现在将路径附加到您的 JDK 前面,并以分号开头。大功告成! 最近的windows命令行中还有一个“where”命令【参考方案2】: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 遍,THERE IS NO UNDO))
在“变量值”字段中,插入“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 步。我发现我必须选择的不是 jregoogle了很久才知道javac.exe会在JDK(C:\Program Files\Java\jdk(version number)\bin)里面,而不是在JRE里面 (C:\Program Files (x86)\Java\jre7\bin) "JRE没有自带编译器,它(JRE)只是一个java运行环境,你需要的是Java开发工具包。”为了使用编译器javac
如果你在 jre 中指向 bin,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,请从此链接下载
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?
【讨论】:
【参考方案4】:我知道这可能不是你的具体错误,但我曾经在我的路径中有一个前导空格,java 可以工作,但 javac 不能。
对于它的价值,我提供明智的建议:“仔细检查你的路径”。
【讨论】:
【参考方案5】:好吧,情况并非总是如此,但我们中的许多人过去都犯过这个错误,其中很少有人仍然没有意识到这一点,也就是说,每次您附加任何环境的路径(任何路径)时变量,您可能会在“分号”之后立即点击空格键(就像您在编辑器中键入时通常在“句点”之后一样)。
这将在路径中创建一个前导空格,例如“C:\Program Files\Java\jdk1.6.0\bin”,因此系统将找不到“javac.exe”。
【讨论】:
【参考方案6】:在此处尝试解决方案: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)。【参考方案7】:我只需要这样做才能让它在 Windows 7 64 上运行。
打开命令提示符 (cmd.exe) 并输入:
set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin
确保重新打开所有正在运行的命令提示符窗口以更新环境变量。
【讨论】:
我想在这里取消设置类路径更好。我不会使用 CLASSPATH 变量,尤其是在它是全局且影响多个 JRE 的 Windows 上...【参考方案8】:更改文件夹“jdk1.7.0_45”“jdk1_7_0_60”并更新Windows环境中的路径。否则,路径会忽略前面代表隐藏文件的点,因此文件夹不会显示在 PATH 字符串中。
【讨论】:
【参考方案9】:";C:\Program Files\Java\jdk1.6.0\bin" 有时您可能会忘记将分号放在最后一个现有路径上。
【讨论】:
【参考方案10】:我遇到了完全相同的问题,java 可以工作,但 javac 在 Windows 8 中的 cmd 提示符下不会。
出现问题是因为忘记去掉路径名末尾的'>'
,即是这样的:
C:\Program Files\Java\jdk*\bin>
它应该是这样的:
C:\Program Files\Java\jdk*\bin
【讨论】:
【参考方案11】:仅为管理员帐户设置路径。因此,如果您还没有以管理员身份启动命令提示符,这一点很重要。
【讨论】:
【参考方案12】:确保在 Path 变量中的路径之间不允许有空格(空白)。我的问题是我有空格,我相信 Windows 将其视为 NULL 并且没有读取我的 Java 路径。
【讨论】:
【参考方案13】:我在这个标题中发布了同样的问题。 Java 可以工作,但javac
不能在 Windows 命令提示符中 (cmd.exe
)。
对我来说,只是将C:\Program Files\Java\jdk1.8.0\bin
添加到我的%PATH%
环境变量的末尾时放置了一个空格。
去掉;
和下一个文件路径之间的空格。
【讨论】:
【参考方案14】:我很感激这是一个老问题,但我的解决方案不是这里的答案,所以发布它以防其他人尝试所有其他问题。
在我的例子中,之前安装的 Java JRE(在 ProgramData/Oracle/Java 中)在我的路径变量列表的顶部有一个路径变量。该“Oracle”路径的内容有一个 java.exe,但没有 javac.exe。 我将完整的 JDK 路径添加到路径变量列表的顶部,在“Oracle”之前,然后它选择了 javac.exe 和 java。
【讨论】:
【参考方案15】:for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME
this 解决方案对我有用
【讨论】:
我建议直接在您的答案中添加更多注释,而不仅仅是提供链接:链接可能会损坏。最好的问候【参考方案16】:当我尝试将 .java 设置为 .class 时,Javac 命令不起作用。我通过转到 C:\Program Files (x86)\Java\jdk1.7.0_04\bin 让它工作,当我在那个目录上时,我输入了 Javac.exe C\Test\test.java 并用它创建了类战术。试试看。
【讨论】:
【参考方案17】:将其命名为“C:\Program Files\Java\jdk1.6.0_16\bin”。去掉反斜杠就可以了
【讨论】:
我不认为这是正确的。我可以将我的路径设置为“C:\Program Files\Java\jdk1.6.0_16\bin\”(带有斜杠),它仍然可以正常工作。以上是关于javac在Windows命令提示符下不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 命令在 Windows 命令提示符下不起作用
Visual Studio 2012 tf 命令在注销状态下不起作用