You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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加入系统环境变量:

  1. 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
  2. 在「系统变量」区域点击「新建」,变量名填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\*
  1. 点击「确定」保存所有设置,然后关闭所有已打开的命令行窗口,重新打开后再执行你的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

火山引擎 最新活动