简体   繁体   English

Windows 上的 Hadoop - “错误 JAVA_HOME 设置不正确。”

[英]Hadoop on Windows - "Error JAVA_HOME is incorrectly set."

I'm trying to get Hadoop running 'Local Mode' on my Windows machine.我试图让 Hadoop 在我的 Windows 机器上运行“本地模式”。 I've been using this guide: http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html我一直在使用本指南: http : //hadoop.apache.org/docs/r1.2.1/single_node_setup.html

When I run the command: bin/hadoop, I get the following error message:当我运行命令:bin/hadoop 时,我收到以下错误消息:

Error: JAVA_HOME is incorrectly set.错误:JAVA_HOME 设置不正确。 Please update C:...\\hadoop-2.7.1\\conf\\hadoop-env.cmd请更新 C:...\\hadoop-2.7.1\\conf\\hadoop-env.cmd

Inside hadoop-env.cmd , I have the line: set JAVA_HOME=%JAVA_HOME%hadoop-env.cmd ,我有一行: set JAVA_HOME=%JAVA_HOME%

When I type echo %JAVA_HOME% at the command line I get: C:\\Java\\jdk1.0.8_51当我在命令行输入echo %JAVA_HOME%时,我得到: C:\\Java\\jdk1.0.8_51

Even if I change the line in hadoop-env.cmd to: set JAVA_HOME=C:\\Java\\jdk1.0.8_51 I get the same error...即使我将hadoop-env.cmd的行更改为: set JAVA_HOME=C:\\Java\\jdk1.0.8_51set JAVA_HOME=C:\\Java\\jdk1.0.8_51得到同样的错误......

How could it be that my JAVA_HOME is incorrectly set?怎么可能是我的JAVA_HOME不正确?

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

like the other answers, your java environment path must not contain space. 像其他答案一样,您的Java环境路径不能包含空格。 The solution is as follows: 解决方法如下:

  1. In the cmd line, charge the directory that contain the jdk (in my case C:\\Program Files\\Java\\jdk1.8.0_73). 在cmd行中,收费包含jdk的目录(在我的情况下为C:\\ Program Files \\ Java \\ jdk1.8.0_73)。
  2. execute the following line "for %I in (.) do echo %~sI" to display the short name of your installed jdk (in my case C:\\PROGRA~1\\Java\\JDK18~1.0_7) 执行以下行“为(。)中的%I做回显%〜sI”以显示已安装的jdk的简称(在我的情况下为C:\\ PROGRA〜1 \\ Java \\ JDK18〜1.0_7)
  3. in the file "hadoop-env.cmd", change the line "JAVA_HOME=%JAVA_HOME%" with "JAVA_HOME=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”。
  4. run again the file "hadoop-env.cmd" and it will work correctly. 再次运行文件“ hadoop-env.cmd”,它将正常运行。

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

 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131\

Above configuration was throwing same error as yours. 上面的配置抛出与您相同的错误。 I updated above with below in hadoop-env.cmd which is infact SFN 我在hadoop-env.cmd中使用以下内容更新了它,它实际上是SFN

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

This allowed me to change/have different java version than that of system. 这使我可以更改/拥有与系统不同的Java版本。

Try removing @ from @rem in hadoop-env.cmd and set JAVA_HOME=%JAVA_HOME% 尝试从hadoop-env.cmd中的@rem中删除@并设置JAVA_HOME =%JAVA_HOME%

rem The java implementation to use.  Required.

set JAVA_HOME=%JAVA_HOME% 设置JAVA_HOME =%JAVA_HOME%

Then try running hdfs namenode -format 然后尝试运行hdfs namenode -format

This solution worked for me 这个解决方案对我有用

if your java environment path contains space, such as "C:\\Program Files\\java\\xxxxx" , the word 《Program Files》 contains a space, so CMD can't identificate 如果您的Java环境路径包含空格,例如“ C:\\ Program Files \\ java \\ xxxxx”,则单词“ Program Files”包含空格,因此CMD无法识别

this is the right answer 这是正确的答案

Try to place the java path in double-coats.尝试将 java 路径放在双层中。 Example:例子:

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

It should work fine.它应该可以正常工作。

in hadoop-config.xml, the logic is 在hadoop-config.xml中,逻辑是

if not exist %JAVA_HOME%\\bin\\java.exe ( echo Error: JAVA_HOME is incorrectly set. echo Please update %HADOOP_HOME%\\conf\\hadoop-env.cmd goto :eof ) 如果不存在,则为%JAVA_HOME%\\ bin \\ java.exe(echo错误:JAVA_HOME设置不正确。echo请更新%HADOOP_HOME%\\ conf \\ hadoop-env.cmd goto:eof)

if your java environment path contains space , such as "C:\\Program Files\\java\\xxxxx" , the word 《Program Files》 contains a space , so CMD can't identificate 如果您的Java环境路径包含空格 ,例如“ C:\\ Program Files \\ java \\ xxxxx”,则单词“ Program Files”包含空格 ,因此CMD无法识别

SO your can change the path instead. 因此,您可以改为更改路径。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM