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。
解决方法如下:
- 在 cmd 行中,加载包含 jdk 的目录(在我的例子中是 C:\Program Files\Java\jdk1.8.0_73)。
- 执行以下行 "for %I in (.) do echo %~sI" 以显示您安装的 jdk 的简称(在我的例子中是 C:\PROGRA~1\Java\JDK18~1.0_7)
- 在文件 "hadoop-env.cmd" 中,将行 "JAVA_HOME=%JAVA_HOME%" 更改为 "JAVA_HOME=C:\PROGRA~1\Java\JDK18~1.0_7"。
- 运行 再次输入文件 "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"
它应该可以正常工作。
我正在尝试在我的 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。 解决方法如下:
- 在 cmd 行中,加载包含 jdk 的目录(在我的例子中是 C:\Program Files\Java\jdk1.8.0_73)。
- 执行以下行 "for %I in (.) do echo %~sI" 以显示您安装的 jdk 的简称(在我的例子中是 C:\PROGRA~1\Java\JDK18~1.0_7)
- 在文件 "hadoop-env.cmd" 中,将行 "JAVA_HOME=%JAVA_HOME%" 更改为 "JAVA_HOME=C:\PROGRA~1\Java\JDK18~1.0_7"。
- 运行 再次输入文件 "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"
它应该可以正常工作。