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

修改Gradle版本后出现path_provider编译失败报错该如何解决?

问题产生原因

  • 该错误是Java 9及以上版本引入的JPMS(Java平台模块系统)访问限制导致的,本质是你升级后的Gradle版本与当前使用的JDK版本不兼容
  • Gradle内部的org.gradle.internal.compiler.java.ClassNameCollector类需要调用JDKjdk.compiler模块下的非公开APIcom.sun.tools.javac.code.Symbol$TypeSymbol,而高版本JDK默认禁止未命名模块(即Gradle的类所属的模块)访问未主动导出的JDK内部包,因此直接抛出访问异常
  • 本次报错触发在path_provider依赖的编译环节,也可能同时存在该第三方依赖版本与当前项目Gradle/AGP版本不匹配的问题

修复方案

你可以根据自己的项目情况选择以下任意一种方案:

  1. 匹配Gradle与JDK的兼容版本
    参照Gradle官方的版本兼容规则调整你的开发环境:
  • 若你使用JDK 1618,对应Gradle版本需要升级到7.47.6.4
  • 若你使用JDK 1920,对应Gradle版本需要升级到8.08.3
  • 若不想升级Gradle,也可以直接将JDK降级到对应Gradle版本支持的范围即可
  1. 添加JVM参数绕过模块访问限制
    无需修改环境版本,直接在项目根目录的gradle.properties文件中添加如下配置即可:
org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED

该配置会主动将JDK对应内部包导出给所有未命名模块访问,直接绕过模块隔离限制。

  1. 升级第三方依赖版本
    如果是Flutter项目使用的path_provider依赖触发的报错,直接将该依赖升级到最新稳定版即可,新版本已经适配了高版本Gradle和JDK的编译规则,不会触发该类访问错误。

  2. 匹配AGP与Gradle版本
    如果是Android项目,还需要保证Android Gradle插件(AGP)版本与Gradle版本的对应关系:

  • AGP 7.0.x 对应 Gradle 7.0+
  • AGP 7.4.x 对应 Gradle 7.5+
  • AGP 8.0.x 对应 Gradle 8.0+
  • AGP 8.2.x 对应 Gradle 8.2+
    版本不匹配也会触发该类内部API访问错误,调整到对应版本即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:48:03