无法使字段私有最终 java.lang.String java.io.File.path 可访问 Qt Android

我正在尝试在 Qt 中运行我的 android 程序,但是我收到以下错误:

Execution failed for task ':processDebugManifest'.
> 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 @13d72a22

我尝试了不同版本的 jdk 和 gradle 但没有任何帮助。

Gradle 版本:7.4.2 JDK 版本:18

stack overflow Unable to make field private final java.lang.String java.io.File.path accessible Qt Android
原文答案

答案:

作者头像

--add-opens=java.base/java.io=ALL-UNNAMED 添加到您的 JAVA_OPTS 环境变量或 org.gradle.jvmargs gradle 属性将解决 Java 18 的此问题。

这是我正在使用的完整 org.gradle.jvmargs gradle 属性值:

org.gradle.jvmargs = -Xmx2048M -Dkotlin.daemon.jvm.options="-Xmx2048M" --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED

另一种选择是降级到 JDK 17。我降级到 openjdk 版本“17.0.3”2022-04-19 并没有收到错误。

作者头像

尝试构建 Android 项目时,我在 IntelliJ 中遇到了这个奇怪的错误。我认为核心原因是我在底部更改了 Gradle 在 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 和 Gradle JVM 中使用的 JDK 版本。我尝试增加它来修复其他问题并得到这个错误。只是改回我一直使用的确切版本似乎可以解决它。这是一个糟糕的答案,但无论如何我都会发布它,它可能会对某人有所帮助。

相关问题