【问题标题】:Hadoop on Windows - "Error JAVA_HOME is incorrectly set."Windows 上的 Hadoop - “错误 JAVA_HOME 设置不正确。”
【发布时间】:2015-07-24 23:00:11
【问题描述】:

我正在尝试让 Hadoop 在我的 Windows 机器上运行“本地模式”。我一直在使用这个指南:http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html

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

错误:JAVA_HOME 设置不正确。请更新 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 环境变量,而不仅仅是你的 shell(假设你只是在 shell 中设置它)。如果没有,则在命令提示符处运行“Java -version”。
  • 感谢您的回复希思。我已将其设置为系统级别。我有一个系统变量 JAVA_HOME=C:\Java\jdk1.0.8_51 ;我的 PATH 用户变量中有 C:\Java\jdk1.0.8_51\bin 。在提示符下输入 Java -version 返回 -> "java version 1.8.0_51..."
  • 现在是否打开新提示并运行 hadoop 工作
  • 没有。抱歉,我应该在之前的评论中提到这一点。
  • 勾选此项以解决您的问题stackoverflow.com/a/70630733/6236959

标签: windows hadoop java-home


【解决方案1】:

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

【讨论】:

  • 是对的!谢谢你拯救了我的一天。只是想让它更详细一点,如果您在安装 JAVA 时使用默认设置,则必须将 JAVA_HOME 设置为“C:\Progra~1\Java\jdk1.8.0_xxx”。 (不要忘记将 xxx 替换为您的实际 jdk 更新 id。)
  • 对!我也遇到了 JAVA_HOME 问题。但随后,我收到另一条错误消息“错误:无法找到或加载主 Trung”
  • @Duong 在 hadoop-env.cmd 文件中将 HADOOP_IDENT_STRING=%USERNAME% 编辑为 HADOOP_IDENT_STRING=用户名(无空格)
【解决方案2】:

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

  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”,它将正常工作。

【讨论】:

    【解决方案3】:
     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\
    

    这让我可以更改/拥有与系统不同的 java 版本。

    【讨论】:

      【解决方案4】:

      使用 conf\hadoop-env.cmd 中的“%JAVA_HOME%”

      【讨论】:

        【解决方案5】:

        如果你的java环境路径有空格,比如“C:\Program Files\java\xxxxx”,那么《Program Files》这个词就有空格,CMD不能识别

        这是正确的答案

        【讨论】:

          【解决方案6】:

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

          rem The java implementation to use.  Required.
          

          设置 JAVA_HOME=%JAVA_HOME%

          然后尝试运行 hdfs namenode -format

          这个解决方案对我有用

          【讨论】:

            【解决方案7】:

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

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

            它应该可以正常工作。

            【讨论】:

            • 那不行。 spark-shell 例如会抛出错误。
            【解决方案8】:

            在hadoop-config.xml中,逻辑是

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

            如果你的java环境路径中包含空格,比如“C:\Program Files\java\xxxxx”,那么《Program Files》这个词就包含了一个空格,所以CMD无法识别

            所以你可以改变路径。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-02-08
              • 2014-10-14
              • 2020-10-14
              • 1970-01-01
              • 2015-11-16
              • 1970-01-01
              • 1970-01-01
              • 2012-07-06
              相关资源
              最近更新 更多