Windows单节点Hadoop运行Jar报错:找不到org.apache.hadoop.util.RunJar主类
解决Windows单节点Hadoop中"Could not find or load main class org.apache.hadoop.util.RunJar"错误
这个问题我之前在Windows部署单节点Hadoop时也碰到过,核心原因就是Hadoop的类路径没配置到位,导致系统找不到org.apache.hadoop.util.RunJar——这个类是Hadoop用来启动用户Jar包的核心工具类。下面是一步步的解决方案:
一、先确认基础环境变量配置
首先得确保Hadoop的基础环境变量没出错:
- 检查
HADOOP_HOME环境变量是否正确指向你的Hadoop安装根目录(比如D:\hadoop-3.3.6) - 确认
%HADOOP_HOME%\bin已经添加到系统的PATH变量里,这样才能在任意目录调用hadoop命令
二、配置HADOOP_CLASSPATH(关键步骤)
这是解决这个错误的核心,你可以选择临时配置或者永久配置:
方式1:临时配置(仅当前命令行窗口有效)
打开CMD命令提示符,执行以下命令:
set HADOOP_CLASSPATH=%HADOOP_HOME%\share\hadoop\common\*;%HADOOP_HOME%\share\hadoop\common\lib\*;%HADOOP_HOME%\share\hadoop\mapreduce\*;%HADOOP_HOME%\share\hadoop\mapreduce\lib\*;%HADOOP_HOME%\share\hadoop\hdfs\*;%HADOOP_HOME%\share\hadoop\hdfs\lib\*;%HADOOP_HOME%\share\hadoop\yarn\*;%HADOOP_HOME%\share\hadoop\yarn\lib\*
配置完成后,直接在当前窗口重新运行你的hadoop jar命令即可。
方式2:永久配置(所有命令行窗口生效)
如果不想每次都手动设置,可以把HADOOP_CLASSPATH加入系统环境变量:
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
- 在「系统变量」区域点击「新建」,变量名填
HADOOP_CLASSPATH,变量值粘贴以下内容:
%HADOOP_HOME%\share\hadoop\common\*;%HADOOP_HOME%\share\hadoop\common\lib\*;%HADOOP_HOME%\share\hadoop\mapreduce\*;%HADOOP_HOME%\share\hadoop\mapreduce\lib\*;%HADOOP_HOME%\share\hadoop\hdfs\*;%HADOOP_HOME%\share\hadoop\hdfs\lib\*;%HADOOP_HOME%\share\hadoop\yarn\*;%HADOOP_HOME%\share\hadoop\yarn\lib\*
- 点击「确定」保存所有设置,然后关闭所有已打开的命令行窗口,重新打开后再执行你的Jar包运行命令。
三、验证配置是否生效
可以执行以下命令查看当前的HADOOP_CLASSPATH:
echo %HADOOP_CLASSPATH%
确认输出内容包含了Hadoop各个模块(common、mapreduce、hdfs、yarn)的Jar包及其lib目录下的所有依赖Jar。
四、额外注意事项
- 确保你的Hadoop版本是稳定的正式版(比如3.x系列),避免使用测试版导致的兼容性问题
- 运行命令时,
MYJAR要替换成你Jar包的实际路径,如果Jar包不在当前命令行工作目录,记得写绝对路径(比如D:\my_project\my_job.jar) - 如果你之前手动设置过系统的
CLASSPATH变量,可能会和HADOOP_CLASSPATH冲突,建议暂时清空CLASSPATH,或者确保HADOOP_CLASSPATH的优先级更高
内容的提问来源于stack exchange,提问作者Dims




