Hadoop的JAVA

Hadoop的JAVA,第1张

运行hadoop命令时,报错:

PS H:\Users\Zhang> hadoop version
系统找不到指定的路径。
Error: JAVA_HOME is incorrectly set.
       Please update G:\GreenSoftwares\hadoop-2.7.3\conf\hadoop-env.cmd
'-Xmx512m' 不是内部或外部命令,也不是可运行的程序

原因是环境变量JAVA_HOME的值存在空格,例如我的Java安装在G:\Program Files\Java\jdk1.8.0_281,就会导致报错。网上现有的教程一般建议把这个jdk文件夹移动(或复制)到一个没有空格的路径下,或者采用缩写(PROGA~1这种),但这样要么会导致之前一些基于绝对路径的设置出错,要么会浪费存储空间,要么存在将来万一有一个也是PROGA开头的文件夹冒名顶替导致出错的隐患。
而利用Windows系统的符号链接功能,可以实现看似复制了一份jdk,实际只在硬盘保留一份jdk的效果。
在PowerShell下,以管理员身份执行:

New-Item -ItemType SymbolicLink -Path ./ -Name javashortlink -Target "G:\Program Files\Java"

该命令意为,在当前目录下新建一个名为javashortlink 的软链接,指向"G:\Program Files\Java"
最终的效果如图所示——在G:\javashortlink下多了一堆JDK。

为了进一步验证这真的是一个软链接,咱们也可以在原始位置G:\Program Files\Java新建一个文本文档,如上图,该文档是可以在javashortlink中看到的。
接下来,你需要将环境变量JAVA_HOME修改为这个软链接下的某个文件夹路径。
例如在PowerShell中执行

$env:java_home="G:\javashortlink\jdk1.8.0_281"

以临时修改环境变量JAVA_HOME。
最后,重新运行Hadoop,就不会再报这个JAVA_HOME错误了。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/736185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存