Spark 3.3.0 spark-submit报错:JAR存在却提示不存在致主类加载失败
Spark 3.3.0 spark-submit 主类加载失败问题
环境
- Spark: 3.3.0 (spark-3.3.0-bin-hadoop3)
问题描述
执行spark-submit命令运行JAR包时,明明JAR文件实际存在,但DependencyUtils返回“jar does not exist”错误,最终触发主类找不到的报错。
执行命令
./spark-submit --class <package-name>.<class-name> <project-path>.jar
报错信息
Error: Failed to load class
.Application.
INFO ShutdownHookManager: Shutdown hook called
排查与解决办法
- 确认JAR路径准确性
要么用绝对路径指定JAR位置,要么确保相对路径是相对于执行spark-submit命令的当前目录。比如在spark/bin目录下执行时,JAR在用户桌面,得写~/Desktop/xxx.jar而非Desktop/xxx.jar。 - 校验JAR内主类存在性
执行jar tf <your-jar-file>.jar查看JAR内部结构,确认<package-name>.<class-name>对应的.class文件存在。比如包名是com.example、类名是Application,要确保JAR里有com/example/Application.class这个文件。 - 重新打包修复损坏JAR
若JAR包在打包过程中损坏或遗漏文件,用Maven的mvn package或Gradle的gradle build命令重新构建项目生成JAR。 - 修复文件权限
确保当前用户对JAR文件有读取权限,执行chmod +r <your-jar-file>.jar赋予读权限。 - 检查Spark配置
查看spark-defaults.conf中的spark.driver.extraClassPath、spark.executor.extraClassPath等配置,避免这些路径设置冲突导致Spark无法识别JAR包。
内容的提问来源于stack exchange,提问作者Jayneel Shah
相关产品推荐
相关产品推荐

