javac不被识别为内部或外部命令、可操作程序或批处理文件
我在编译Java程序时遇到一个错误 我在Windows上(这是Windows特有的问题),我安装了最新的JDK 我尝试了一个涉及javac不被识别为内部或外部命令、可操作程序或批处理文件,java,path,environment-variables,command-prompt,javac,Java,Path,Environment Variables,Command Prompt,Javac,我在编译Java程序时遇到一个错误 我在Windows上(这是Windows特有的问题),我安装了最新的JDK 我尝试了一个涉及PATH变量的解决方案,但错误仍然存在 控制台输出: C:\>set path=C:程序文件(x86)\Java\jdk1.7.0\bin C:\>javac Hello.java “javac”未被识别为内部或外部命令, 可操作的程序或批处理文件。 您输入了错误的set命令–您错过了C:之后的反斜杠。应该是: C:\>set path=C:\Program Files
PATH
变量的解决方案,但错误仍然存在
控制台输出:
C:\>set path=C:程序文件(x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
“javac”未被识别为内部或外部命令,
可操作的程序或批处理文件。
您输入了错误的set
命令–您错过了C:
之后的反斜杠。应该是:
C:\>set path=C:\Program Files(x86)\Java\jdk1.7.0\bin
TL;博士
对于有经验的读者:
C:\ProgramFiles\Java\jdkxxxx\bin\
路径
JAVA\u HOME
欢迎光临 您遇到了Java初学者面临的最臭名昭著的技术问题之一:
'xyz'不能被识别为内部或外部命令…
错误消息
简而言之,您没有正确安装Java。在Windows上完成Java安装需要一些手动步骤。安装Java之后,包括升级JDK之后,必须始终执行这些步骤
环境变量和路径
(如果您已经理解了这一点,请跳过下面三节。)
运行javac HelloWorld.java
时,cmd必须确定javac.exe
的位置。这是通过环境变量PATH
实现的
是一种特殊的键值对(例如,windir=C:\WINDOWS
)。大多数是随操作系统提供的,有些是系统正常运行所必需的。它们的列表在每个程序(包括cmd)启动时传递给它,有:用户环境变量和系统环境变量
您可以看到如下环境变量:
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\APPDATA\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\ProgramFiles(x86)\CommonFiles
CommonProgramW6432=C:\Program Files\Common Files
...
最重要的变量是。它是一个路径列表,由分隔代码>。在cmd中输入命令时,将扫描列表中的每个目录以查找匹配的可执行文件
在我的计算机上,路径是:
C:\>echo%PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
漫游\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\ProgramFiles\nodejs\;C:\ProgramFiles(x86)\Thread\bin\;C:\用户\
craig\AppData\Local\Thread\bin;C:\ProgramFiles\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\ProgramFiles\7-Zip\;C:\ProgramFiles\PuTTY\;C:\
程序文件\launch4j;C:\ProgramFiles(x86)\NSIS\Bin;C:\ProgramFiles(x86)\Common文件
\Adobe\AGL;C:\Program Files\Intel\Intel(R)管理引擎组件\DAL;C:\程序
文件\Intel\Intel(R)管理引擎组件\IPT;C:\Program Files\Intel\iCLS客户端\;
C:\Program Files(x86)\Intel\Intel(R)管理引擎组件\DAL;C:\程序文件
(x86)\Intel\Intel(R)管理引擎组件\IPT;C:\Program Files(x86)\Intel\iCLS
客户\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps
运行javac HelloWorld.java
时,当意识到javac
不是一个时,cmd将搜索。它机械地输入列表中的每个目录,并检查是否存在。当它找到javac
时,它运行它。如果没有,则打印“javac”不会被识别为内部或外部命令、可操作程序或批处理文件。
必须将Java可执行文件目录添加到PATH
JDK与JRE
(如果您已经理解了这一点,请跳过本节。)
下载Java时,您可以选择:
- JRE包括运行Java程序所需的工具,但不包括编译新程序的工具,它包含
Java
,但不包含javac
- (JDK),它包含
java
和javac
,以及许多其他开发工具。JDK是JRE的超集
您必须确保已安装JDK。如果只安装了JRE,则无法执行javac
,因为硬盘上没有安装Java编译器。检查Windows程序列表,确保Java包的名称中包含“Development Kit”字样
不要使用set
(如果您不打算这样做,请跳过本节。)
其他几个答案建议执行以下一些变体:
C:\>::不要这样做
C:\>set PATH=C:\Program Files\Java\jdk1.7.0\U 09\bin
不要那样做。该命令存在几个主要问题:
此命令从PATH
中删除所有其他内容,并将其替换为Java路径。执行此命令后,您可能会发现其他各种命令不起作用
您的Java路径可能不是
C:\Program Files\Java\jdk1.7.0\u 09\bin
——您几乎肯定有一个较新版本的JDK,它会有一个不同的路径
路径
仅适用于当前cmd会话。你必须重新开始
C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java