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

IDEA本地运行Spark3.2.0报IllegalAccessError错误如何解决

问题解决方案

1 首先修复POM依赖版本不匹配问题

你当前的依赖存在严重的版本不一致问题:spark-core、spark-sql使用3.2.0版本对应Scala 2.13,而spark-hive使用2.1.3版本对应Scala 2.11,跨大版本混用会直接引发兼容异常。
修正后的spark-hive依赖如下:

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.13</artifactId>
    <version>3.2.0</version>
    <!-- 本地运行时可先注释provided scope,避免IDEA找不到依赖 -->
    <!-- <scope>provided</scope> -->
</dependency>

2 解决JDK模块访问限制问题

报错的核心原因是JDK 9及以上版本引入了Java平台模块系统,默认禁止访问sun.nio.ch等内部API,Spark 3.2.0版本默认对高版本JDK的兼容性不足,有两种解决方案可选:

  • 方案一(最稳妥):将项目的JDK版本切换为JDK 8,Spark 3.x全系列对JDK 8的兼容性最好,不需要额外配置即可正常运行
  • 方案二(保留高版本JDK):给JVM添加启动参数,开放对应内部包的访问权限
    如果你使用IntelliJ IDEA运行,操作路径为:点击右上角运行配置 -> 编辑配置 -> 找到对应主类的运行配置 -> 在「VM选项」框中添加如下参数:
    --add-exports java.base/sun.nio.ch=ALL-UNNAMED
    
    如果后续还有其他类似的访问报错,可以按需追加其他导出参数:
    --add-exports java.base/sun.nio.ch=ALL-UNNAMED
    --add-opens java.base/java.lang=ALL-UNNAMED
    --add-opens java.base/java.nio=ALL-UNNAMED
    --add-opens java.base/java.util=ALL-UNNAMED
    

3 验证生效

修改完成后右键点击pom.xml选择Maven -> 重新加载项目,重新运行主类即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:04