在Andriod studio中的gradle中添加tasks.withType(Javac::class.java) 报错Could not get unknown property 'Javac' for extension 'android' of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
时间: 2024-03-21 11:42:08 浏览: 194
这个问题是因为你没有正确导入 `Javac` 类。你需要在 `build.gradle` 文件的开头添加以下代码:
```
import com.sun.tools.javac.api.JavacTool
```
然后将你的代码修改为:
```
tasks.withType(JavacTool::class.java) {
options.compilerArgs.addAll(['--add-opens', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED'])
}
```
这样就可以成功添加 `Javac` 任务了。
相关问题
在Andriod studio中的gradle中添加options.compilerArgs.addAll(arrayOf报错No signature of method: org.gradle.api.tasks.compile.JavaCompile.arrayOf() is applicable for argument types: (String, String) values: [--add-opens, jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED]
这个错误是因为Gradle版本不兼容导致的。你可以尝试升级Gradle版本来解决这个问题。另外,也可以将`arrayOf`替换为`[ ]`来解决这个问题,具体代码如下所示:
```
options.compilerArgs.addAll(['--add-opens', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED'])
```
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
这个报错是因为在使用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"))
}
}
```
然后重新编译即可。
阅读全文