无法将“ Java”识别为内部或外部命令


157

尝试检查运行我的Java的当前版本时,收到错误“ java不被识别为内部或外部命令,可操作程序或批处理文件”。

我正在运行Windows 7 OS,并且已经下载了最新的JDK,并觉得我可能像从前使用命令“ java -version”检查Java版本之前从机器上意外删除了Java。

我必须下载什么软件才能使Java重新在我的计算机上运行?

编辑:

确保所有环境变量都指向当前Java SDK之后,我设法从cmd重新运行Java。感谢您对我的问题的所有回答。

卡伦

Answers:


199

您需要配置环境变量JAVA_HOMEPATH

JAVA_HOME必须包含java的路径,并且应将%JAVA_HOME%\ bin添加到PATH

或者,您可以简单地将PATHbin文件夹的整个路径添加到路径中,而无需添加JAVA_HOME变量,但是,当您需要在计算机上使用多个Java版本时,这会有些烦人(这样,您只需进行更改JAVA_HOME并甚至不用理会PATH


就我而言,我已经安装了jdk 7,并且在我更新到较新的jdk 8版本之前,它工作得很好,解决方案是卸载旧版本的jdk
moein rahimi

1
这对我的作品后删除JAVA_HOME和整个路径到Java bin文件夹设置成第一路径变量
穆罕默德沙·埃里

我已经有一个PATH变量。我可以更改内容而不破坏其他内容吗?
Liggliluff

记得加上大写两个变量“JAVA_HOME”,然后选择“PATH”,既
马科Ottina

由于Windows 10中的某些原因,这将不起作用。将完整路径放在PATH变量中,而不要使用%JAVA_HOME%。看看这个答案:stackoverflow.com/a/62590863/3337089
Nagabhushan SN

139

对于Windows 7:

  1. 右键点击 My Computer
  2. 选择 Properties
  3. 选择 Advanced System Settings
  4. 选择Advanced标签
  5. 选择 Environment Variables
  6. 选择PathSystem Variables
  7. 点击Edit按钮
  8. 在变量值编辑器中,将其粘贴到行的开头

    C:\Program Files\Java\jdk1.7.0_72\bin;
  9. 单击确定,然后再次确定

  10. 重新启动命令提示符,否则将看不到路径变量的更改
  11. 键入java -version命令提示符。


关于步骤8的注释:
1.此版本中的Java版本可能与此处使用的版本不同-这仅是示例。
2. path变量中可能还会有其他值。切勿删除已经存在的内容非常重要。这就是为什么指令说要在行的开头粘贴给定值的原因-这意味着您不删除现有值,只需将Java放在其前面。如果路径上也有其他版本的Java,这也可以解决您遇到的所有问题。

关于步骤6的注意事项:
1.这将设置计算机的路径,而不是单个用户的路径。可能是您正在其他开发人员也使用的计算机上工作,在这种情况下,您宁愿设置用户变量,而不是系统变量


6
此“重新启动命令提示符,否则它将看不到路径变量的更改”
Andrew Paes

1
不要使用';' for jdk 10
brainLoop 18'Apr

53

听起来好像您没有在路径中添加正确的目录。

首先,找出要在其中安装Java的目录。例如,在我的包装盒中的目录是C:\Program Files\java\jdk1.7.0_111。找到它后,请尝试直接运行它。例如:

c:\> "c:\Program Files\java\jdk1.7.0_11\bin\java" -version

绝对拥有正确的版本后,将bin目录添加到您的PATH环境变量中。

请注意,您不需要JAVA_HOME环境变量,并且已经有一段时间了。某些工具可能会使用它-如果您正在使用其中的一种,那么请确定设置它-但是,如果您仅使用(例如)Eclipse和命令行java/ javac工具,那么没有它也可以。


1是的,这提醒我我需要更新...


@SotiriosDelimanolis:我个人不记得上一次需要它了。某些工具可能会-但我只会在实际需要时才开始更改环境,而不仅仅是顺理成章。(我将编辑答案以表明这一点。)
Jon Skeet

1
非常感谢您的回答,但是在“ Path”和“ JAVA_HOME”环境变量中都添加了java的路径后,我似乎仍然收到相同的错误。
卡伦

2
@Karen:那么,您是否尝试过明确运行它的第一步?更改环境变量后,您是否重新启动了命令提示符?
乔恩·斯基特

当我运行斜体 c:\>“ c:\ Program Files \ java \ jdk1.7.0_11 \ bin \ java” -version 斜体时,它说“ java版本'1.7.0_11'Java <TM> SE运行时环境<内部版本1.7。 0_11-b21> Java HotSpot <TM>客户端VM <版本23.6-b04,混合模式,共享>
Karen

是的,在更改环境变量之后,我已经重新启动了cmd,但不幸的是似乎没有任何更改。
卡伦

48

假设将Java / JDK安装到以下文件夹:C:\ Program Files \ Java

Java / JDK安装路径

按照步骤:

  1. 转到控制面板→系统→高级系统设置→高级→环境变量Win+ Pause/Break系统控制面板
  2. 系统变量部分,单击新建…
  3. 变量名中输入JAVA_HOME
  4. Variable value write:中C:\Program Files\Java\bin,按OK添加JAVA_HOME
  5. 系统变量部分中,双击Path
  6. 新建并写入C:\Program Files\Java\bin,然后按确定添加Java路径
  7. 环境变量窗口中,按确定
  8. 重新启动/运行cmd.exe并编写java --versionJava版本CMD

喜欢(windows +暂停中断)提示。
CodeFinity

我只是尝试使用窗口10。该命令java --version不起作用,但java -version有效。
史蒂夫

14

搜索环境变量。 在此处输入图片说明

打开“编辑系统环境变量”。然后点击“环境变量”。 在此处输入图片说明

在“用户变量”下,单击“路径”,然后单击“编辑”。 在此处输入图片说明

找到您的Java路径,然后单击“编辑”。 在此处输入图片说明

然后粘贴您的Java安装文件夹的路径。通常,您可以在与此类似的路径上找到它。C:\ Program Files \ Java \ jdk-12.0.2 \ bin

然后单击确定。现在在开始菜单中,键入cmd。打开命令提示符。输入java -version如果操作正确,它应该显示如下内容。 在此处输入图片说明


9

对我来说,在系统变量路径的开头放置::后,它开始工作:-


在此处输入图片说明

在此处输入图片说明



6

我的解决办法是把相同的值(路径JDK bin文件夹)中JAVA_HOMEPath

JAVA_HOME 路径


1
欢迎来到SO。请添加一些更多的信息-例如,你实际投入JAVA_HOMEPATH和不涉及其他的答案。
Michael Lihs

5

此问题在Windows 8上出现。首先复制Java jdk的路径-例如C:\ Program Files \ Java \ jdk1.7.0_51 \ bin。

  1. 右键单击桌面上“我的电脑”图标,然后单击“属性”。

  2. 在左侧窗格中选择“高级系统设置”。

  3. 在“高级”标签下,选择底部的“环境变量”。

  4. 在系统变量中,选择“路径”变量并进行编辑。

粘贴路径并添加“;” 最后-例如C:\ Program Files \ Java \ jdk1.7.0_51 \ bin;


2
在追加之前,请确保(;)位于现有路径的末尾。
Sanjeet A

3

在我的情况下,正确设置了PATH,但是我错误地将.exe扩展名清除了PATHEXT。这就是为什么窗口无法从命令提示符下找到Java或任何.exe应用程序的原因。希望它可以帮助某人。


1

我有同样的问题。只需在您的计算机上安装java的确切位即可。如果您的PC是64位的,则安装64位的Java。如果是32位,则反之亦然:)


1

不知道为什么,但是就我而言,原因是因为我在运行Anaconda终端而不是CMD。

在我使用CMD并按照上面所有注释所提到的那样更新路径设置后,该问题就解决了。


0

如果您在Windows Box中安装了cygwin,或者使用UNIX Shell,则

Issue bash#which java

这将告诉您java是否在类路径中。


0

我更正了路径变量,但命令提示符需要重新启动,否则,它将无法验证对路径变量的更改。可能对像我这样的人有帮助。所以“ 重启命令提示符


0

如果已在用户变量下设置了环境变量(JAVA_HOMEPATH),则命令提示符(以管理员身份运行)将无法识别Java。为此,您需要在系统变量下设置环境变量。

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.