我在尝试编译 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.
原文由 user987137 发布,翻译遵循 CC BY-SA 4.0 许可协议
长话短说
对于有经验的读者:
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 上,有 两种类型: 用户环境变量 和 _系统环境变量_。你可以看到你的环境变量是这样的:
最重要的变量是
PATH
。它是一个路径列表,由;
分隔。当在 cmd 中输入命令时,将扫描列表中的每个目录以查找匹配的可执行文件。在我的电脑上,
PATH
是:When you run
javac HelloWorld.java
, cmd, upon realizing thatjavac
is not an internal command , searches the systemPATH
followed by the userPATH
.它机械地进入列表中的每个目录,并检查javac.com
、javac.exe
、javac.bat
等 是否存在。当它找到javac
时,它会运行它。如果没有,它会打印'javac' is not recognized as an internal or external command, operable program or batch file.
您必须将 Java 可执行文件目录添加到
PATH
。JDK 与 JRE
(如果您已经了解这一点,请随时跳过此部分。)
下载 Java 时,您可以选择:
java
但不包含 ---javac
。java
和javac
以及许多其他开发工具。 JDK 是 JRE 的超集。您必须确保 已安装 JDK 。如果您只安装了 JRE,则无法执行
javac
,因为您的硬盘上没有安装 Java 编译器。检查您的 Windows 程序列表,并确保 Java 程序包的名称中包含“Development Kit”字样。不要使用
set
(如果您无论如何都不打算这样做,请随时跳过此部分。)
其他几个答案建议执行以下变体:
不要那样做。该命令有几个主要问题:
PATH
中 删除所有其他内容,并将其替换为 Java 路径。执行此命令后,您可能会发现其他各种命令不起作用。C:\Program Files\Java\jdk1.7.0_09\bin
– 您几乎肯定有更新版本的 JDK,它会有不同的路径。PATH
仅适用 于当前的 cmd 会话。每次打开命令提示符时,您都必须重新输入set
命令。第 1 点和第 2 点可以用这个稍微好一点的版本来解决:
但总的来说,这只是一个坏主意。
找到Java路径
正确的方法是从找到安装 Java 的位置开始。这 取决于 您安装 Java 的方式。
安装程序
您已通过运行安装程序安装了 Java。 Oracle 的安装程序将 Java 版本置于
C:\Program Files\Java\
(或C:\Program Files (x86)\Java\
)下。使用文件资源管理器或命令提示符,导航到该目录。每个子文件夹代表一个 Java 版本。如果只有一个,那么您已经找到了。否则,请选择看起来像较新版本的版本。确保文件夹名称以
jdk
jre
)。进入目录。然后进入那个
bin
目录。您现在位于正确的目录中。复制路径。如果在文件资源管理器中,请单击地址栏。如果在命令提示符中,请 复制 提示符。
生成的 Java 路径应采用以下形式(不带引号):
压缩文件
您已下载包含 JDK 的 .zip。将它解压缩到某个不会妨碍您的地方;
C:\Java\
是一个可以接受的选择。然后在其中某处找到
bin
文件夹。您现在位于正确的目录中。复制它的路径。这是 Java 路径。
请记住永远不要移动文件夹,因为这会使路径无效。
打开设置对话框
这是要编辑的对话框
PATH
。有多种方法可以进入该对话框,具体取决于您的 Windows 版本、UI 设置以及系统配置的混乱程度。尝试其中的一些:
control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» 环境变量Control Panel\System and Security\System
» 高级系统设置(最左侧,在边栏中) » 环境变量这些中的任何一个都应该带你到正确的设置对话框。
如果您使用的是 Windows 10,Microsoft 为您提供了一个 精美的新 UI 来编辑
PATH
。否则,您将看到PATH
在其完整的分号镶嵌的荣耀中,被挤压到一个单行文本框中。尽最大努力在不破坏系统的情况下进行必要的编辑。清洁
PATH
看看
PATH
。您几乎肯定有两个PATH
变量(因为用户与系统环境变量)。你需要看看他们两个。检查 其他 Java 路径 并将其删除。它们的存在会引起各种冲突。 (例如,如果您在
PATH
中有 JRE 8 和 JDK 11,那么javac
将调用 Java 11 编译器,这将创建版本 55.class
文件,但是java
将调用 Java 8 JVM,它只支持最高版本 52,您将遇到 不受支持的版本错误,并且无法编译和运行任何程序。)通过以下方式回避这些问题确保在PATH
中只有一个 Java 路径。当您这样做时,您也可以 卸载旧的 Java 版本。请记住,您 不需要 同时拥有 JDK 和 JRE。如果您有
C:\ProgramData\Oracle\Java\javapath
, 也将其删除。 Oracle 打算通过创建一个始终指向最新 Java 安装的 符号链接 来解决升级后 Java 路径中断的问题。不幸的是,它通常最终会指向错误的位置或 根本无法正常工作。最好删除此条目并手动管理 Java 路径。现在也是对
PATH
执行一般内务处理的好机会。如果您的 PC 上不再安装与软件相关的路径,则可以删除它们。您还可以打乱路径的顺序(如果您关心这样的事情)。添加到
PATH
现在将您在三步之前找到的 Java 路径放入系统中
PATH
。您的新路径在列表中的哪个位置并不重要;把它放在最后是一个不错的选择。
如果您使用的是 Windows 10 之前的用户界面,请确保您已正确放置分号。列表中的每条路径都应该有一个分隔符。
这里真的没什么好说的。只需将路径添加到
PATH
并单击确定。设置
JAVA_HOME
当你这样做的时候,你也可以设置
JAVA_HOME
。这是另一个应该也包含 Java 路径的环境变量。如果设置不正确,许多 Java 和非 Java 程序(包括流行的 Java 构建系统 Maven 和 Gradle )都会抛出错误。如果
JAVA_HOME
不存在,创建一个新的系统环境变量。将其设置为没有bin/
目录的 Java 目录的路径,即C:\Program Files\Java\jdkxxxx\
。记得在升级 Java 后编辑
JAVA_HOME
。关闭并重新打开命令提示符
尽管您已修改
PATH
,但所有正在运行的程序(包括 cmd)只会看到旧的PATH
。这是因为所有环境变量的列表仅在程序开始执行时才被复制到程序中;此后,它只查询缓存的副本。cmd的环境变量没有什么好的办法刷新,干脆关闭Command Prompt再打开。如果您使用的是 IDE,请关闭并重新打开它。
也可以看看