37

背景

  1. 我在 android studio 中开始了我的第一个项目,以熟悉 Android 编程。
  2. 我正在关注本教程,其中
  • 我创建了一个新项目 Empty Activity,没有任何变化
  • 它应该模拟一个显示“Hello World”消息的简单应用程序

问题描述 但是每次我尝试运行和构建(我现在想模拟器)时,我都会收到以下错误消息。

Unable to make field private final java.lang.String java.io.File.path accessible:
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 @42760a00

这是我的配置设置

  1. Android Gradle 插件版本:4.2.1
  2. Gradle 版本:7.0.1(更改以修复我在同步 Gradle 时遇到的另一个问题(“Gradle 同步失败:不支持的类文件主要版本 60”)并基于此论坛上的讨论,如下所述)

Andrey Dernov 评论于 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或 JDK 低于 16 的版本进行导入和构建项目(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 | Gradle | Gradle JVM 选项)。

  1. JDK:16.0.1

有什么建议或想法吗?

4

10 回答 10

52

来自GitHub的解决方案对我有用。无需降级 Java JDK。只是将 gradle-wrapper 属性中的 gradle 版本更改为 7.1.1(6.x 不支持 java 16),并在 gradle.properties 中添加以下行:

org.gradle.jvmargs=-Xmx1536M --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
于 2021-09-14T14:50:06.520 回答
14

我发现这个讨论与我的问题有关。但无法弄清楚如何在 Android Studio 中传递 JVM 参数。

但是,在将 JDK 16 替换为 JDK 15 后,该错误就消失了。

于 2021-06-01T18:44:51.530 回答
10

我想我找到了解决方案。

如果您正在导入旧项目,您可能会遇到此错误。

基本上,您使用较低的 JDK 版本创建了旧项目,现在您的系统中当前安装了较高的 JDK 版本。

您应该避免使用更高版本的 JDK 来构建旧项目。

  1. 基本上下载 JDK 8 (1.8) 并安装它。
  2. 更改环境变量(将 JDK 8 路径写入环境变量)
  3. 然后更改您的项目结构并将 JDK 8 路径写入 JDK 位置。

在此处输入图像描述

  1. 使缓存无效并重新启动android studio。
  2. 构建您的项目,它应该可以工作。

如果您收到以下错误:

Error:Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: 72477 > 65536

然后在 app.gradle 文件中添加以下依赖项:

 // multidex
implementation 'com.android.support:multidex:1.0.3'

那么你需要在你的 app.gradle 文件中启用 multidex。

android {
compileSdkVersion 30

defaultConfig {
    applicationId "com.convenient.easymeasure"
    minSdkVersion 19
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"
    multiDexEnabled true

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
于 2021-07-05T16:10:58.093 回答
6

您必须使用 Gradle 版本不支持的 JDK 版本。

1-检查您的 JDK 版本(无需降级)

2-检查您的 JDK https://docs.gradle.org/current/userguide/compatibility.html的相应 Gradle 版本

3-从.\android\gradle\wrapper\中打开gradle-wrapper.properties gradle-wrapper.properties 文件的屏幕截图,并将distributionUrl更改为所需的 gradle 版本

例如对于 JDK 17

distributionUrl = https\://services.gradle.org/distributions/gradle-7.3-all.zip

4-从build.gradle 文件中的.\android\build.gradle类路径打开build.gradle并将类路径中 的插件更改为根据您的 gradle 版本的插件

例如

classpath("com.android.tools.build:gradle:4.2.2") for JDK 6.71+
classpath("com.android.tools.build:gradle:7.0.0") for JDK 7+

在https://developer.android.com/studio/releases/gradle-plugin#updating-gradle检查您的 Gradle 版本的兼容插件

5 次运行npx react-native run-android

于 2022-01-21T21:08:16.473 回答
5

运行Flutter doctor,如果出现错误提示找不到捆绑的 java(特别是如果您有 Android Studio 版本的Artic Fox),如果使用 Mac,请运行以下命令:

  1. cd /Applications/Android\ Studio.app/Contents/jre
  2. ln -s ../jre jdk
  3. ln -s "/Library/Internet 插件/JavaAppletPlugin.plugin" jdk
于 2021-08-31T03:09:57.750 回答
1

您必须使用 JDK-16,使用低于 JDK-16 的版本,就我而言,我降级到 JDK-11,它对我有用。

于 2021-09-09T17:28:19.683 回答
1

曾在 Macbook Air M1 Apple Silicon 为我工作。您无需降级或卸载 Java JDK。

就我而言,只是将 gradle-wrapper.properties 中的 gradle 版本更改为 7.2,如下所示:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip 

并在 gradle.properties 中添加以下行:

org.gradle.jvmargs=-Xmx1536M --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

github上的相关解决方案

于 2021-12-20T01:34:03.573 回答
0

检查是否安装了 JDK 或未配置您的 SDK,然后再试一次,您可以从Java SE下载 JDK

于 2021-06-01T06:21:07.597 回答
0

我下载了 2 个 JDK jdk-17.0.1jdk-11.0.13并在 gradle.properties 上添加以下行

org.gradle.java.home=C\:\\Program Files (x86)\\Java\\jdk-11.0.13

还可以转到 Android Studio (Arctic Fox)-> 项目结构 -> Gradle 设置并选择 JDK 版本

于 2021-12-25T14:58:29.867 回答
0

我可以通过使用 Android Studio 升级等级项目设置来修复它,替换 classpath("com.android.tools.build:gradle:4.2.2")classpath('com.android.tools.build:gradle:7.0.3')inandroid/build.gradle

于 2022-01-30T04:39:21.323 回答