Windows - "Error JAVA_HOME is incorrectly set." 上的 Hadoop

Hadoop on Windows - "Error JAVA_HOME is incorrectly set."

我正在尝试在我的 Windows 机器上安装 Hadoop 运行ning 'Local Mode'。我一直在使用这个指南:http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html

当我 运行 命令:bin/hadoop 时,我收到以下错误消息:

Error: JAVA_HOME is incorrectly set. Please update C:...\hadoop-2.7.1\conf\hadoop-env.cmd

hadoop-env.cmd 里面,我有一行: set JAVA_HOME=%JAVA_HOME%

当我在命令行输入 echo %JAVA_HOME% 时,我得到: C:\Java\jdk1.0.8_51

即使我将 hadoop-env.cmd 中的行更改为: set JAVA_HOME=C:\Java\jdk1.0.8_51 我得到同样的错误...

怎么会是我的JAVA_HOME设置有误呢?

如果您的 JAVA_HOME 路径包含空格,您必须使用 Windows 8.3 Pathname

使用 conf\hadoop-env.cmd

中的“%JAVA_HOME%”

在hadoop-config.xml中,逻辑是

如果不存在 %JAVA_HOME%\bin\java.exe ( echo 错误:JAVA_HOME 设置不正确。 echo 请更新 %HADOOP_HOME%\conf\hadoop-env.cmd 转到:eof )

如果你的java环境路径包含space,比如"C:\Program Files\java\xxxxx",《Program Files》这个词包含一个space,所以cmd无法识别

所以您可以更改路径。

如果你的java环境路径包含space,比如"C:\Program Files\java\xxxxx",《Program Files》这个词包含一个space,所以CMD无法识别

这是正确答案

与其他答案一样,您的 java 环境路径不得包含 space。 解决方法如下:

  1. 在 cmd 行中,加载包含 jdk 的目录(在我的例子中是 C:\Program Files\Java\jdk1.8.0_73)。
  2. 执行以下行 "for %I in (.) do echo %~sI" 以显示您安装的 jdk 的简称(在我的例子中是 C:\PROGRA~1\Java\JDK18~1.0_7)
  3. 在文件 "hadoop-env.cmd" 中,将行 "JAVA_HOME=%JAVA_HOME%" 更改为 "JAVA_HOME=C:\PROGRA~1\Java\JDK18~1.0_7"。
  4. 运行 再次输入文件 "hadoop-env.cmd",它将正常工作。
 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131\

以上配置抛出与您相同的错误。我在 hadoop-env.cmd 中更新了上面的内容,实际上是 SFN

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

这让我可以 change/have 不同于系统的 java 版本。

尝试从 hadoop-env.cmd 中的 @rem 中删除 @ 并设置 JAVA_HOME=%JAVA_HOME%

rem The java implementation to use.  Required.

设置JAVA_HOME=%JAVA_HOME%

然后尝试运行 hdfs namenode -format

这个解决方案对我有用

尝试将 java 路径放在双层涂层中。示例:

JAVA_HOME="C:\Program Files\Java\jdk-12.0.1"   

它应该可以正常工作。