use*_*137 248 java path javac environment-variables command-prompt
我在尝试编译Java程序时遇到错误.
我在Windows上(这是一个特定于Windows的问题),我安装了最新的JDK.
我尝试过涉及PATH变量的解决方案,但错误仍然存在.
控制台输出:
C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
小智 413
对于有经验的读者
C:\Program Files\Java\jdkxxxx\bin\PATH.删除旧的Java路径.PATH.JAVA_HOME.欢迎!
您遇到过Java初学者面临的最臭名昭着的技术问题之一:'xyz' is not recognized as an internal or external command...错误消息.
简而言之,您没有正确安装Java.在Windows上完成Java的安装需要一些手动步骤.安装Java后必须始终执行这些步骤,包括升级JDK之后.
PATH(如果您已经理解了这一点,请随意跳过接下来的三个部分.)
运行时javac HelloWorld.java,cmd必须确定javac.exe位于何处.这是通过PATH环境变量完成的.
的环境变量是一个特殊的键-值对(例如windir=C:\WINDOWS).大多数都带有操作系统,有些是系统正常运行所必需的.它们的列表在启动时传递给每个程序(包括cmd).在Windows上,有两种类型:用户环境变量和系统环境变量.
你可以看到你的环境变量:
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...
Run Code Online (Sandbox Code Playgroud)
最重要的变量是PATH.它是一个路径列表,用以表示;.将命令输入cmd后,将扫描列表中的每个目录以查找匹配的可执行文件.
在我的电脑上,PATH是:
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\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps
Run Code Online (Sandbox Code Playgroud)
当您运行时javac HelloWorld.java,cmd在意识到这javac不是内部命令时,搜索系统PATH后跟用户PATH.它机械地进入列表中的每个目录中,并且如果检查javac.com,javac.exe,javac.bat等的存在.当它找到时javac,它会运行它.如果没有,则打印'javac' is not recognized as an internal or external command, operable program or batch file.
您必须将Java可执行文件目录添加到PATH.
(如果您已经理解了这一点,请随意跳过本节.)
下载Java时,您可以选择:
java但不是javac.java和javac,与其他开发工具主机一起.JDK是JRE的超集.您必须确保已安装JDK.如果您只安装了JRE,则无法执行,javac因为您的硬盘驱动器上没有安装Java编译器.检查您的Windows程序列表,并确保Java包的名称中包含"Development Kit"字样.
set(如果您还没有计划,请跳过此部分.)
其他几个答案建议执行以下变体:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
Run Code Online (Sandbox Code Playgroud)
不要那样做.该命令有几个主要问题:
PATH和与Java路径替换它.执行此命令后,您可能会发现其他各种命令无效.C:\Program Files\Java\jdk1.7.0_09\bin - 你几乎肯定有一个更新版本的JDK,它有不同的路径.PATH 仅适用于当前的cmd会话.set每次打开命令提示符时都必须重新输入命令.点#1和#2可以通过这个稍微好一点的版本来解决:
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
Run Code Online (Sandbox Code Playgroud)
但总的来说这只是一个坏主意.
正确的方法从找到安装Java的位置开始.这取决于您如何安装Java.
您已通过运行安装程序安装了Java.Oracle的安装程序在C:\Program Files\Java\(或C:\Program Files (x86)\Java\)下放置Java版本.使用文件资源管理器或命令提示符,导航到该目录.
每个子文件夹代表一个Java版本.如果只有一个,你就找到了它.否则,请选择看起来像较新版本的那个.确保文件夹名称以jdk(而不是jre)开头.输入目录.
然后输入该bin目录.
您现在位于正确的目录中.复制路径.如果在文件资源管理器中,单击地址栏.如果在命令提示符下,请复制提示.
生成的Java路径应采用(不带引号)的形式:
C:\Program Files\Java\jdkxxxx\bin\
Run Code Online (Sandbox Code Playgroud)
您已经下载了包含JDK的.zip.将它提取到一些随意的地方,它不会妨碍你; C:\Java\是可以接受的选择.
然后在其中的bin某个位置找到该文件夹.
您现在位于正确的目录中.复制其路径.这是Java路径.
请记住永远不要移动文件夹,因为这会使路径无效.

那是要编辑的对话框PATH.有许多方法可以访问该对话框,具体取决于您的Windows版本,UI设置以及系统配置的混乱程度.
尝试其中一些:
control sysdm.cpl,,3SystemPropertiesAdvanced.exe»环境变量Control Panel\System and Security\System»高级系统设置(最左侧,侧栏)»环境变量其中任何一个都应该带您进入正确的设置对话框.
如果您使用的是Windows 10,那么Microsoft已经为您提供了一个值得编辑的新UIPATH.否则,你将看到PATH它完整的分号镶嵌的荣耀,挤进一个单行文本框.尽力在不破坏系统的情况下进行必要的编辑.
PATH看看PATH.你几乎肯定有两个PATH变量(因为用户与系统环境变量).你需要看看他们两个.
检查其他Java路径并将其删除.它们的存在可能导致各种冲突.(例如,如果您PATH按顺序安装了JRE 8和JDK 11 ,那么javac将调用Java 11编译器,它将创建版本55 .class文件,但java将调用Java 8 JVM,它仅支持最高版本52,并且您将遇到不受支持的版本错误,无法编译和运行任何程序.)通过确保您只有一个Java路径来解决这些问题PATH.当你在它的时候,你也可以卸载旧的Java版本.请记住,您不需要同时拥有JDK和JRE.
如果有C:\ProgramData\Oracle\Java\javapath,也删除它.Oracle旨在通过创建始终指向最新Java安装的符号链接来解决升级后Java路径中断的问题.不幸的是,它往往最终指向错误的位置或根本不工作.最好删除此条目并手动管理Java路径.
现在也是进行一般家务管理的好机会PATH.如果您的PC上不再安装与软件相关的路径,则可以将其删除.你也可以改变路径的顺序(如果你关心这样的事情).
PATH现在选择三步之前找到的Java路径,并将其放在系统中PATH.
你的新路径在列表中的位置无关紧要; 把它放在最后是一个很好的选择.
如果您使用的是Windows 10之前的UI,请确保已正确放置分号.应该只有一个分隔列表中的每个路径.
这里真的没什么好说的.只需添加路径,PATH然后单击"确定".
JAVA_HOME当你在这里时,你也可以设置JAVA_HOME好.这是另一个应该包含Java路径的环境变量.许多Java和非Java程序(包括流行的Java构建系统Gradle)如果未正确设置,将抛出错误.
如果JAVA_HOME不存在,请将其创建为新的系统环境变量.将其设置为您添加到的相同Java路径PATH.
记得JAVA_HOME在升级Java之后编辑.
虽然您已经修改过PATH,但所有正在运行的程序(包括cmd)只能看到旧程序PATH.这是因为所有环境变量的列表仅在程序开始执行时被复制到程序中; 此后,它只参考缓存的副本.
没有好的方法来刷新cmd的环境变量,所以只需关闭命令提示符并再次打开它.如果您使用的是IDE,请关闭并重新打开它.
Ahm*_*nas 76
试试这个..我也有它但现在它在XP中解决了..
C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java
Run Code Online (Sandbox Code Playgroud)
Rag*_*ram 44
你错误地输入了set命令 - 之后错过了反斜杠C:.它应该是:
C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin
Run Code Online (Sandbox Code Playgroud)
fre*_*her 11
从命令提示符运行以下命令:
set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
或
set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
我试过这个,效果很好.
| 归档时间: |
|
| 查看次数: |
1055474 次 |
| 最近记录: |