Android Studio 使用jdk17.0.7,本地java使用了jdk17.0.7,报错报错Execution failed for task ':app:compileDebugJavaWithJavac'. > superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner (in unnamed module @0x369f0c74) 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 @0x369f0c74
时间: 2024-03-21 20:40:54 浏览: 20
这个报错是因为在使用ButterKnife注解时,ButterKnifeProcessor 这个类中引用了 JDK 的 com.sun.tools.javac.tree.TreeScanner,而 JDK 17 中默认是关闭了对 com.sun.* 包的访问权限的,所以会出现该报错。
解决方法:
在 app 模块的 build.gradle 文件中添加以下代码:
```gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// 添加以下代码
tasks.withType(Javac::class.java) {
options.compilerArgs.addAll(arrayOf("--add-opens", "jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"))
}
}
```
然后重新编译即可。
相关问题
Android Studio 使用jdk17.0.7,那么本地java环境用哪个版本
建议使用与Android Studio中使用的JDK版本相同的Java版本,即jdk17.0.7。这样可以避免因Java版本不一致而导致的不兼容性问题。如果您的系统中没有安装jdk17.0.7,您可以从Oracle官网下载并安装此版本的JDK。安装完成后,确保将JAVA_HOME环境变量设置为新安装的JDK路径。这样您就可以在本地Java环境中使用jdk17.0.7了。
Android Studio出现这种错误Execution failed for task ':app:compileDebugJavaWithJavac'.该如何解决
这个错误通常是由于代码中存在语法错误或者类文件缺失导致的。你可以尝试以下解决方法:
1. 清理并重新构建项目:在 Studio中点击菜单“Build” -> “Clean Project” -> “Rebuild Project”。
2. 检查代码中是否存在语法错误:在代码中查找红色的波浪线并修正错误。
3. 检查项目依赖:在项目的build.gradle文件中检查依赖库是否正确引入。
4. 检查Java JDK版本:确保安装的Java JDK版本与项目中指定的版本相同。
如果以上方法都没有解决问题,你可以尝试在控制台中运行gradle命令来查看详细的错误信息,以便更好地定位问题。