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

Windows 10下如何解决Gradle ':app:compileDebugJavaWithJavac'任务执行失败的IllegalAccessError问题?

解决JDK 17 + Gradle 7.2下的:app:compileDebugJavaWithJavac编译错误

这个错误的核心原因是JDK 17的模块化机制限制了内部API的访问——jdk.compiler模块没有将com.sun.tools.javac.code包暴露给Gradle的未命名模块,导致编译时出现非法访问错误。针对Windows 10系统,你可以尝试以下几种解决方案:

方案一:通过Gradle配置添加JVM导出参数

你需要在Gradle的全局或项目配置中添加--add-exports参数,让JDK允许Gradle访问相关内部API:

  1. 打开项目根目录下的gradle.properties文件(如果没有就新建一个);
  2. 添加以下配置:
    org.gradle.jvmargs=--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
    
    这些参数会让jdk.compiler模块把编译所需的几个关键包导出给所有未命名模块,Gradle的编译进程就能正常访问这些类了。

方案二:确保Android Gradle Plugin(AGP)版本与Gradle 7.2匹配

如果你是Android项目,AGP版本和Gradle版本必须严格兼容:

  • Gradle 7.2对应的AGP版本应该是7.2.0(可以在项目根目录的build.gradle文件中查看);
  • 如果你的AGP版本过低(比如低于7.0),它可能不支持JDK 17的模块化特性,需要更新AGP:
    在项目根目录的build.gradle文件中修改:
    buildscript {
        repositories {
            google()
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:7.2.0'
        }
    }
    

方案三:检查项目的Java版本配置

确保项目中指定的Java版本和你使用的JDK 17一致:

  1. 在模块级的build.gradle(也就是app/build.gradle)中添加或修改:
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_17
            targetCompatibility JavaVersion.VERSION_17
        }
        // 如果项目使用Kotlin,还需要添加以下配置
        kotlinOptions {
            jvmTarget = '17'
        }
    }
    

方案四:清理并重新构建项目

完成上述配置后,执行以下操作确保缓存被彻底清除:

  • 在Android Studio中点击File -> Invalidate Caches... -> Invalidate and Restart;
  • 或者在命令行中运行:
    gradlew clean build --refresh-dependencies
    

这些步骤从模块化权限、工具版本兼容、项目配置三个层面修复了问题,应该能解决你遇到的非法访问错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:02:47