Ash*_*nxy 10 java android android-studio
背景
问题描述 但是每次我尝试运行和构建(我现在想要模拟器)时,我都会收到以下错误消息。
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
Run Code Online (Sandbox Code Playgroud)
这是我的配置设置:
Andrey Dernov 评论 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或低于 16 版本的 JDK 来导入和构建项目(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 | Gradle | Gradle JVM 选项)。
有什么建议或想法吗?
lor*_*chi 312
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
Run Code Online (Sandbox Code Playgroud)
usa*_*een 185
您使用的 JDK 版本必须不受 Gradle 版本支持。(无需降级)
1-从C:\Program Files\Java检查您的 JDK 版本。就我而言,它是 JDK-17.0.2
2-检查 JDK 的相应 Gradle 版本 https://docs.gradle.org/current/userguide/compatibility.html
3-从.\android\gradle\wrapper\打开gradle-wrapper.properties
并将distributionUrl更改为您所需的 gradle 版本
例如对于 JDK 17
distributionUrl = https\://services.gradle.org/distributions/gradle-7.3-all.zip
Run Code Online (Sandbox Code Playgroud)
4-从.\android\build.gradle打开build.gradle
并将类路径中的插件更改为根据您的gradle版本的插件
例如
classpath("com.android.tools.build:gradle:4.2.2") for Gradle 6.7.1+
classpath("com.android.tools.build:gradle:7.0.0") for Gradle 7+
Run Code Online (Sandbox Code Playgroud)
检查您的 Gradle 版本的兼容插件: https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
5 次运行npx react-native run-android
小智 23
曾在 Macbook Air M1 Apple Silicon 为我工作。您无需降级或卸载 Java JDK。
就我而言,只需将 gradle-wrapper.properties 中的 gradle 版本更改为 7.2,如下所示:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
Run Code Online (Sandbox Code Playgroud)
并在 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
Run Code Online (Sandbox Code Playgroud)
github上有相关解决方案
Tar*_*ood 15
在 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
Run Code Online (Sandbox Code Playgroud)
And*_*rea 10
运行Flutter doctor,如果出现\xc2\xb4s 错误,表明无法找到\xc2\xb4t 捆绑的 java(特别是如果您有 Android Studio 版本Artic Fox),如果使用 Mac,请运行以下命令:
小智 10
就我而言,以下步骤成功了:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
Run Code Online (Sandbox Code Playgroud)
dependencies {
classpath 'com.android.tools.build:gradle:7.2.1'
classpath 'com.google.gms:google-services:4.3.5'
}
Run Code Online (Sandbox Code Playgroud)
我能够通过使用 Android Studio 升级等级项目设置来修复它,并将其替换
classpath("com.android.tools.build:gradle:4.2.2")为 classpath('com.android.tools.build:gradle:7.0.3')inandroid/build.gradle
小智 6
我想我找到了解决方案。
如果您正在导入旧项目,您可能会遇到此错误。
基本上,您使用较低的 JDK 版本制作了旧项目,现在您的系统中当前安装了较高的 JDK 版本。
您应该避免使用更高的 JDK 版本来构建较旧的项目。
如果您收到以下错误:
Error:Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: 72477 > 65536
Run Code Online (Sandbox Code Playgroud)
然后在 app.gradle 文件中添加以下依赖项:
// multidex
implementation 'com.android.support:multidex:1.0.3'
Run Code Online (Sandbox Code Playgroud)
那么你需要在你的 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"
}
Run Code Online (Sandbox Code Playgroud)
将 Android Studio 更新为 electric eel 后,我在 Flutter 2 项目中遇到了同样的问题。我仍然能够构建 android 项目,但flutter run在 Flutter 项目上会导致此问题。lortschi 的答案是关键,但它缺少一个使其工作的条目,所以我最终的 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 \
--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)
我非常怀疑,但它确实有效。
对于那些在最新 Android Studio - Electric Eel 版本以及其他金丝雀和预览版本中遇到这些问题的用户,请注意,jreAndroid Studio 安装文件夹中的捆绑目录现已重命名为jbr
要解决这个问题,只需创建一个符号链接jre-> jbr,Flutter 就不会抱怨。
在 Linux 上
cd ~/android-studio/ && ln -s jbr jre
Run Code Online (Sandbox Code Playgroud)
Windows(检查安装文件夹)
cd C:\Program Files\Android\Android Studio
mklink /D "jre" "jbr"
Run Code Online (Sandbox Code Playgroud)
或者
New-Item -ItemType SymbolicLink -Path .\jre -Target .\jbr
Run Code Online (Sandbox Code Playgroud)
苹果系统
cd /Applications/Android\ Studio.app/Contents
ln -s jbr jre
Run Code Online (Sandbox Code Playgroud)
请注意,如果您运行的是预览版,默认安装目录可能会有所不同,例如在 Linux 上,默认安装目录是
~/android-studio-preview/
Run Code Online (Sandbox Code Playgroud)
这是 Gradle 在启用测试分发的情况下使用 Java 17 运行测试时的一个已知问题
将其添加到您的 build.gradle(.kts 版本可在下面的链接中找到)
tasks.named('test', Test) {
jvmArgs(
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
'--add-opens', 'java.base/java.util=ALL-UNNAMED'
)
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.gradle.com/enterprise/test-distribution/#accessing_jdk_internal_classes_from_your_tests
请参阅原始 github 问题https://github.com/gradle/gradle/issues/18647
小智 5
就我而言,当我使用时发生了错误:
Gradle version = 6.5&Gradle JDK version = 17.0.6在Android Studio Giraffe (Stable)
您可以在文件中的这一行检查 Gradle 版本gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
并检查 JDK 版本:
File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK
要修复此错误,您需要选择与您的 Gradle Version 兼容的 JDK 版本。您可以在这里检查兼容性:
https://developer.android.com/build/releases/gradle-plugin#updating-gradle
我选择
JDK 11.0.18(Gradle version 6.5与我当前的 JDK 相比较低的 JDK 版本)
综上所述,选择兼容的JDK版本就是这个错误的答案。
| 归档时间: |
|
| 查看次数: |
12024 次 |
| 最近记录: |