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

Spring Boot创建SparkSession遇scala方法找不到错误求助

问题分析与解决方案

核心问题

你遇到的java.lang.NoSuchMethodError本质是Scala版本依赖冲突:

  • spark-core_2.12基于Scala 2.12编译
  • spark-sql_2.13基于Scala 2.13编译
  • 手动引入的scala-library是2.12.15
    三个依赖的Scala版本不统一,导致运行时找不到正确的Scala类方法。

修复步骤

1. 统一Spark组件的Scala版本

把spark-sql的artifactId改成和spark-core一致的_2.12版本,同时保持Spark版本统一(建议用同一个版本,比如3.3.0或者3.3.2):

<!-- 修改spark-sql依赖 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.3.0</version> <!-- 和spark-core版本保持一致 -->
    <!-- 本地运行可去掉provided,集群运行再添加 -->
</dependency>

2. 确保Scala库版本匹配

Spark 3.3.x对应Scala 2.12的推荐版本是2.12.15,你当前的scala-library版本是对的,但要确保没有其他依赖引入更高版本的Scala库。可以执行mvn dependency:tree检查依赖树,排除冲突的Scala依赖。

3. 移除不必要的手动依赖

Spring Boot的spring-boot-starter-web已经包含spring-core,不需要单独引入spring-core依赖,手动指定版本反而可能导致Spring版本冲突,建议删除这个单独的依赖:

<!-- 删除以下依赖 -->
<!--
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>6.0.5</version>
</dependency>
-->

4. 优化后的完整依赖示例

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.thoughtworks.paranamer</groupId>
        <artifactId>paranamer</artifactId>
        <version>2.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.3.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.12</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.12.15</version>
    </dependency>
</dependencies>

额外注意事项

  • 本地运行Spark时,spark-sql的scope不要设为provided,否则运行时会找不到类;如果是打包到Spark集群运行,再设置为provided。
  • 每次修改依赖后,执行mvn clean install清理旧的依赖缓存,避免残留冲突。

内容的提问来源于stack exchange,提问作者dev-rev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:00:40