概述
在编译 Android Studio 项目时,可能会遇到以下错误提示:
plaintext
Cause: superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner (in unnamed module @0x274412b0) cannot access class com.sun.tools.javac.tree.TreeScanner (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.tree to unnamed module @0x274412b0
该错误通常表示 ButterKnife
的处理器类无法访问 JDK 编译器模块中的某些内部类。本文将介绍两种解决方法。
解决办法
一:降低 JDK 版本
如果使用的是 JDK 17,可以尝试将 JDK 版本降为 JDK 11 或 JDK 15。较低版本的 JDK 可能不会出现此类问题。
步骤
下载并安装较低版本的 JDK:
- 访问 Oracle JDK 下载页面 或使用 AdoptOpenJDK 获取较低版本的 JDK。
配置 Android Studio 使用新版本的 JDK:
- 打开 Android Studio,点击菜单栏中的
File
->Project Structure
。 - 在
Project
标签下选择新安装的 JDK 版本。
- 打开 Android Studio,点击菜单栏中的
二:修改 gradle.properties
文件
可以在项目的根目录下的 gradle.properties
文件中添加特定的 JVM 参数,以允许访问所需的内部类。
步骤
编辑
gradle.properties
文件:- 打开项目根目录下的
gradle.properties
文件。
- 打开项目根目录下的
添加以下配置:
propertiesorg.gradle.jvmargs=-Xmx1920M \ --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \ --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
保存文件并重新构建项目:
- 保存更改后,重新构建项目以确保设置生效。