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:
- 打开项目根目录下的
gradle.properties文件(如果没有就新建一个); - 添加以下配置:
这些参数会让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-UNNAMEDjdk.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一致:
- 在模块级的
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
相关产品推荐
相关产品推荐

