【BUG系列】Flutter Unable to make field private final java.lang.String java.io.File.path accessible: ...
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.
这个异常通常是因为Java版本不兼容或者项目构建方式不对所导致的。具体地说,这个异常主要是由Java 9及以上版本的模块化特性引起的。
在Java 9及以上版本中,Java平台被分成了多个模块,每个模块都有自己的作用域和依赖关系。当使用一些第三方库时,如果该库内部使用了Java核心库的一些私有API,那么就可能会导致上述异常发生,因为Java 9之后的版本默认情况下是不允许访问私有API的。另外,也有可能是因为项目使用了不兼容的Gradle版本或者构建方式不正确所引起的。
针对这个问题,可以尝试以下解决方案:
方案一:
升级Gradle版本到5.6及以上版本,因为这个版本从底层支持Java 9及以上版本的模块化特性。
方案二(我是这样解决的):
在项目的build.gradle文件中添加以下语句:
tasks.withType(JavaCompile) {
options.compilerArgs.addAll(['--add-opens', 'java.base/java.io=ALL-UNNAMED'])
}
这样可以打开对Java io的无限制访问权限。
方案三:
如果使用的是Android Studio,可以在项目的gradle.properties文件中添加以下语句:
android.enableDexingArtifactTransform.desugaring=false
这样可以禁用Desugaring,从而避免一些不兼容问题。
希望这些解决方案能够帮助你解决问题。
- 感谢你赐予我前进的力量