What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @1d6547fTry:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
這個(gè)異常通常是因?yàn)镴ava版本不兼容或者項(xiàng)目構(gòu)建方式不對(duì)所導(dǎo)致的创南。具體地說(shuō),這個(gè)異常主要是由Java 9及以上版本的模塊化特性引起的。
在Java 9及以上版本中吨娜,Java平臺(tái)被分成了多個(gè)模塊米母,每個(gè)模塊都有自己的作用域和依賴關(guān)系爱咬。當(dāng)使用一些第三方庫(kù)時(shí),如果該庫(kù)內(nèi)部使用了Java核心庫(kù)的一些私有API蜂绎,那么就可能會(huì)導(dǎo)致上述異常發(fā)生师枣,因?yàn)镴ava 9之后的版本默認(rèn)情況下是不允許訪問(wèn)私有API的找岖。另外许布,也有可能是因?yàn)轫?xiàng)目使用了不兼容的Gradle版本或者構(gòu)建方式不正確所引起的杂曲。
針對(duì)這個(gè)問(wèn)題庶艾,可以嘗試以下解決方案:
方案一:
升級(jí)Gradle版本到5.6及以上版本,因?yàn)檫@個(gè)版本從底層支持Java 9及以上版本的模塊化特性擎勘。
方案二(我是這樣解決的):
在項(xiàng)目的build.gradle文件中添加以下語(yǔ)句:
tasks.withType(JavaCompile) {
options.compilerArgs.addAll(['--add-opens', 'java.base/java.io=ALL-UNNAMED'])
}
這樣可以打開(kāi)對(duì)Java io的無(wú)限制訪問(wèn)權(quán)限咱揍。
方案三:
如果使用的是Android Studio,可以在項(xiàng)目的gradle.properties文件中添加以下語(yǔ)句:
android.enableDexingArtifactTransform.desugaring=false
這樣可以禁用Desugaring棚饵,從而避免一些不兼容問(wèn)題述召。
希望這些解決方案能夠幫助你解決問(wèn)題。