You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark从1.6升级至3.5.1时遭遇SLF4J与Java 11错误求助

解决方案:Spark 3.5.1升级后的SLF4J与ASM依赖冲突问题

错误原因解析

  1. SLF4J加载失败:Spark 3.x内部依赖SLF4J作为日志门面,即使你的代码未直接使用,Spark运行时也会尝试加载SLF4J的实现绑定。缺少绑定包会导致默认使用无操作日志实现,同时抛出加载错误。
  2. NoSuchFieldError: JAVA_11:该错误源于ASM库版本冲突——Spark 3.5.1依赖高版本ASM(包含JAVA_11字段),而你的项目中可能引入了旧版本ASM,导致运行时找不到该字段。

具体修复步骤

1. 调整Maven依赖,统一SLF4J与Log4j绑定

在pom.xml中,对Spark核心依赖排除冲突的日志和ASM依赖,然后引入统一版本的SLF4J、Log4j1.2及绑定包:

<!-- Spark Core 依赖,排除冲突组件 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.5.1</version>
    <exclusions>
        <!-- 排除Spark自带的SLF4J和Log4j -->
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
        <!-- 排除旧版本ASM -->
        <exclusion>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 统一SLF4J版本(与Spark 3.5.1兼容) -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>

<!-- SLF4J 转 Log4j1.2 的绑定包 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.36</version>
    <scope>runtime</scope>
</dependency>

<!-- 你的Log4j1.2依赖 -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2. 强制使用兼容的ASM版本

添加ASM依赖,强制使用Spark 3.5.1适配的版本(9.5),覆盖项目中旧的ASM依赖:

<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm</artifactId>
    <version>9.5</version>
</dependency>
<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm-commons</artifactId>
    <version>9.5</version>
</dependency>

3. 确保Maven编译使用Java 8

在pom.xml中添加编译配置,匹配你的本地Java环境:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:31:18