获取JAVA_HOME与hadoop的设置不正确

20
我刚刚下载了Hadoop并解压了文件。但是,当我从命令提示符中运行"hadoop version"命令时,我收到以下错误。我已经仔细检查,JAVA_HOME被设置为“C:\Program Files\Java\jdk1.8.0_45\bin”,这对我来说看起来没问题。
C:\Users\shri-pc>hadoop version
The system cannot find the path specified.
Error: JAVA_HOME is incorrectly set.
       Please update C:\JAVA\hadoop-2.6.0\conf\hadoop-env.cmd
'-Xmx512m' is not recognized as an internal or external command,
operable program or batch file.

运行 java -version 命令的输出已经正常,请给予建议。

C:\Users\shri-pc>java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) Client VM (build 25.51-b03, mixed mode)

3
我建议你不要再说“我确定……”了。Hadoop 不同意你的观点。如果你假设自己犯了一个错误,并且不遗余力地去找出它,你会取得更快的进展。仅仅 java.exe 显示正确的版本是不够的。JAVA_HOME 设置为什么?你可以显示它。 - duffymo
JAVA_HOME已设置为"C:\Program Files\Java\jdk1.8.0_45\bin"。 - Shri S Softwares
1
应该去掉\bin。Hadoop会在%JAVA_HOME%\bin\java中查找Java,因此如果你的JAVA_HOME已经包含了\bin,那么它将会寻找C:\Program Files\Java\jdk1.8.0_45\bin\bin\java,而这显然是不存在的。(这是使用JAVA_HOME的标准方式) - yshavit
是的,我一开始使用的是没有 bin 的版本,但它并没有起作用。我尝试了删除 bin 文件夹后重新打开命令提示符,但仍然出现相同的错误。 - Shri S Softwares
应该去掉 /bin。然后将 JAVA_HOME/bin 添加到您的 PATH 中。 - duffymo
7个回答

54

问题出在JAVA_HOME路径中有空格。我更改了路径如下所示,然后它就开始工作了。

从 -

"C:\Program Files\Java\jdk1.8.0_45\bin"

到 -

"C:\PROGRA~1\Java\jdk1.8.0_45\bin"

.


1
我的答案包括 set "PATH=%PATH%;%JAVA_HOME%\bin",这是在Windows上(从命令行)转义变量中的空格的方法。如果您没有64位的Windows和Java,则可以使用~1 - Elliott Frisch
1
谢谢Elliott。我已将您的答案标记为此问题的答案。只有一个建议-如果您可以将此作为注释放在您的答案中,那么对于看到您的答案的新手来说可能会有所帮助。非常感谢! - Shri S Softwares
我把Java文件夹移动到了C盘。对我来说,空间是个问题。谢谢! - javaPlease42
艾略特被烧伤了。 - Mohammad S. Alam
谢谢,你节省了很多时间和精力...! - spaceman
“C:\PROGRA~1\”是这个答案中非常有用的东西,谢谢。我唯一看到的问题是对于JAVA_HOME,如@ElliottFrisch所提到的,bin不应该是路径的一部分。稍后可以在路径中添加%JAVA_HOME%\bin,其中bin是有意义的。 - Sagar

13

您的JAVA_HOME路径不应包含bin。请将其从以下路径更改:

"C:\Program Files\Java\jdk1.8.0_45\bin"

"C:\Program Files\Java\jdk1.8.0_45"

你可以将它添加到你的路径中(在Windows中),如下:

set "PATH=%PATH%;%JAVA_HOME%\bin"

1
是的,Elliott,我已经进行了这个更改,但我仍然收到相同的错误信息。 - Shri S Softwares
3
这是Windows系统,通常无法在原地进行更改。请尝试重新启动计算机。 - Elliott Frisch

9
如果你的JAVA_HOME路径是 Program Files,那么需要将其更改为 PROGRA~1,修改JAVA_HOME环境变量。

1
这对我起作用是因为,在我的情况下,问题是JAVA_HOME值不能包含空格。 - lampShadesDrifter

6

尝试将路径从

C:\Program Files\Java\jdk1.8.0_45

更改为

C:\PROGRA~1\Java\jdk1.8.0_45


1

路径中的空格将无法正常工作。 只需删除路径中的任何空格。

在我的情况下,它可以正常工作:

set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_261

0

0

1) 您的路径中不应该有任何空格。

2) 在设置Java环境变量时,JAVA_HOME不应包含“/bin”。 Java路径不应包含“/bin”。此外,请确保您的Java-8路径位于系统中所有Java版本的顶部。

3) 相同的路径应更新到您的Hadoop环境变量设置中。 即在Hadoop-env文件中 ---> 靠近JAVA_HOME


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接