Background
Description du problème Mais chaque fois que j'essaie d'exécuter et de construire (je veux émulatrice pour l'instant), j'obtiens le message d'erreur suivant.
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
Voici mon Config Config Set-up :
Andrey Dernov a commenté le 14 avril 2021 00:18 Veuillez utiliser Gradle 7.0 ou JDK Moins de 16 version pour importergin et construire le projet (paramètres (Préférences sur macOS) | Construire, exécution, déploiement | Outils de construction | Gradle | Option Gradle JVM).
toute suggestion ou idée?
14 Réponses :
Vérifiez si JDK est installé ou ne configurez pas votre SDK également et réessayez Vous pouvez télécharger jdkfrom java se
Oui, ils sont à la fois configurés et configurés dans la section Structure du projet
J'ai trouvé cela Discussion En quelque sorte lié à ma question. Mais je n'ai pas pu comprendre comment passer les paramètres JVM dans Android Studio.
Mais, l'erreur a disparu après avoir remplacé JDK 16 par JDK 15.
Je résouse également le problème en remplaçant JDK 16 à 1.8.
La rétrogradation de JDK n'est pas une solution.
@Rohitgaikwad pourquoi?
@reducingActivity, au début, vous devriez demander à votre équipe d'applications si la rétrogradation est une solution acceptée? Ils ne devraient jamais accepter cela. Dans les applications d'entreprise, tous les logiciels tiers devraient passer aux dernières versions uniquement (pour obtenir un support officiel, de nouvelles fonctionnalités et pour éviter les frais généraux de migration (si vous ne passez pas de JDK15 à une version plus élevée, puis un jour, vous serez obligé de le faire )). De plus, demandez-vous juste en raison de ce problème de modularisation pourquoi l'entreprise devrait revenir à JDK15? On dirait que ce n'est qu'une application POC.
@Rohitgaikwad Je ne travaille pas dans la société avec une interdiction stupide de rétrogradation. "Ils ne devraient jamais accepter cela." Il y a parfois de bonnes raisons de rétrograder, y compris des problèmes de sécurité critiques. L'interdiction générale de la rétrogradation est une bureaucratie typique de la bureaucratie de la société. Et cela suppose que les développeurs ne sont pas en mesure de contrôler leurs propres machines, ce qui n'est pas vrai même dans toutes les sociétés. La couverture "n'est pas une solution" n'est pas vraie.
@reducingActivity. Ok allez-y, joyeux voyage !!! Assurez-vous également de rétrograder votre autre exemple de bibliothèques 3rdparty comme la journalisation de log4j2.x à 1.x!, Si vos développeurs rencontrent des problèmes de blocage avec la journalisation. De plus, quelle est la justification / cause profonde exacte pour rétrograder le JDK? Cela doit être apporté sur la table au début.
@Rohitgaikwad "Quelle est la justification / cause profonde exacte pour rétrograder le JDK?" "Android Studio est brisé avec" est une raison assez convaincante quand on fabrique Android App :) "Si vos développeurs" - je n'ai pas de développeurs, je suis développeur.
@reducingActivity "Android Studio est cassé" n'est pas une cause profonde, c'est un problème auquel vous êtes confronté pendant le développement avec JDK16. Vous devez justifier quel changement exact dans JDK16 a brisé cela. Vérifiez le rapport JDK16 Release Notes / Bug Corred pour toutes les modifications apportées dans la zone qui, selon vous, provoque cette régression. Si votre entreprise a un support payant, augmentez un bug avec Oracle avec un POC qui se traduit par cette exception. Aussi, essayez avec JDK17, cela devrait être une meilleure option que de rétrograder car il est A LTS et JDK15 / 16 ne sont pas LTS. La solution pour mettre à niveau Gradle me semble bien, trouvez de tels problèmes à votre fin.
Je pense que j'ai trouvé la solution.
Si vous importez un ancien projet, vous êtes susceptible de faire face à cette erreur.
Fondamentalement, vous avez fait votre ancien projet avec plus bas Les versions JDK et maintenant vous avez des versions JDK plus élevées installées actuellement dans votre système.
Vous devez éviter les versions JDK plus élevées pour la création de projets plus anciens.
Si vous avez l'erreur suivante:
android { compileSdkVersion 30 defaultConfig { applicationId "com.convenient.easymeasure" minSdkVersion 19 targetSdkVersion 30 versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
puis ajoutez la dépendance suivante dans votre fichier app.gradle:
// multidex implementation 'com.android.support:multidex:1.0.3'
Exécuter Flutter Doctor
, s'il y a une erreur indiquant que le Java Bundled peut être trouvé (spécialement si vous avez une version Android Studio Artic Fox ), exécutez Cela commande si vous utilisez Mac:
Je me battais avec Android Studio Artic Fox (pendant 2 jours) pour construire et gérer un émulateur Android. Flutter Doctor était tout bon. J'ai essayé JDK 11, 15, 16. J'ai essayé d'ajouter des variables à .bash_profile. J'ai installé et essayé des émulateurs plus anciens. Rien ne fonctionnait. Vos commandes ont fonctionné. Pouvez-vous expliquer pourquoi Andrey?
@ Lopes710 La raison en est que la version Artic Fox a un emplacement différent pour la bibliothèque Java, les commandes d'en haut sont destinées à donner le chemin correct. Cette erreur se produit généralement lorsque vous venez d'une ancienne version d'Android Studio à Artic Fox
Cela devrait être la réponse acceptée. Si sur Mac, et après avoir mis à jour Android Studio à Arctic Fox 2020.3.1 (patch 4) de la version précédente (4.2.2)
Vous devez utiliser JDK-16, utiliser la version ci-dessous JDK-16, dans mon cas, je rétablisse à JDK-11 et cela a fonctionné pour moi.
La rétrogradation ne retarde que les problèmes, cela ne les résout pas.
La solution de github a fonctionné pour moi. Il n'était pas nécessaire de rétrograder Java JDK. Il suffit de modifier la version Gradle dans les propriétés Gradle-Wrapper au 7.1.1 (6.x ne prend pas en charge Java 16), et l'ajout de la ligne suivante dans 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
Merci mec! Cela fonctionne pour moi, je viens de copier le code et de le coller sur Android / Gradle.properties
Il a travaillé pour moi aussi. Mais pourriez-vous expliquer ce que fait exactement cette ligne?
Ce n'était pas la bonne réponse, même si cela me donne et l'idée de changer le chemin de la classe Gradle, et l'alto a fonctionné
Pour le compilateur Butterknife, ajoutez également - add-exports = jdk.compiller / com.sun.tools.javac.tree = all-unna med --add-exports = jdk.compiller / com.sun.tools. javac.code = all-unna med --add-exports = jdk.compiller / com.sun.tools.javac.util = all-unna med
a fonctionné pour moi dans MacBook Air M1 Apple Silicon. Vous n'avez pas besoin de rétrograder ou de désinstaller Java Jdk.
Dans mon cas, il suffit de changer la version Gradle dans Gradle-Wrapper.properties en 7.2 Comme ceci:
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
et ajoutant la ligne suivante dans gradle.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
Solution réalisée sur github
p>
J'ai téléchargé 2 jdk jdk-17.0.1 et jdk-11.0.13 et ajouter en dessous de la ligne sur gradle.properties
org.gradle.java.home=C\:\\Program Files (x86)\\Java\\jdk-11.0.13
Allez également sur Android Studio (Arctic Fox) -> Structure du projet -> Paramètre Gradle et choisissez JDK version
Vous devez utiliser une version JDK qui n'est pas prise en charge par la version Gradle. (Il n'est pas nécessaire de rétrograder)
1-vérifiez votre version JDK de C: \ Program Files \ Java . Dans mon cas, c'est JDK-17.0.2
2-Check la version Gradle respective pour votre JDK https://docs.gradle.org/current/userguide/compatibilité.html
3-outre gradle-wrapper.properties de . \ Android \ gradle \ wrapper \ et modifiez le distributionurl en version gradle requise
par exemple pour JDK 17
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+
4-open build.gradle de . \ Android \ build.gradle et modifiez le plugin du chemin de classe vers celui selon votre version gradle
par exemple
distributionUrl = https\://services.gradle.org/distributions/gradle-7.3-all.zip
Vérifiez le plugin compatible pour votre version gradle à https://developer.android.com/studio/releases/gradle-plugin # Updating-Gradle
5 run npx react-natif run-android
Merci, cela a fonctionné pour moi! Meilleure réponse!
Meilleure réponse et solution, merci, cette réponse doit être acceptée au lieu de rétrograder JDK RÉPONSE
J'ai pu le réparer en mettant à niveau les paramètres de projet de qualité à l'aide d'Android Studio qui ont remplacé
classPath ("com.android.tools.build:gradle:4.2.2")
avec classpath ('com.android.tools.build:gradle:7.0.3') code > dans
Android / build.gradle
Installation de JDK 1.8.0 et définit le chemin Java_Home vers le dossier de JDK 1.8.0 dans les variables d'environnement a fonctionné pour moi.
JDK 1.8 n'a plus de support actif, il n'a qu'un support de sécurité (pendant un peu plus longtemps) et je ne recommanderais plus de l'utiliser. Il existe de nouvelles versions disponibles. Voir aussi endoflife.date/java
a eu le même problème avec le flottement. J'ai désinstallé Android Studio et Android SDK et j'ai tout réinstallé et amélioré le flottement, sans succès.
Ensuite, j'ai créé un nouveau projet de flottement et copié les sources de l'ancienne, et cette fois, cela a fonctionné.
J'ai mis à jour jdk à 18
, puis j'ai obtenu cette erreur. Après avoir exécuté cette commande Choco installer OpenJDK11
, cela a résolu mon problème. fot ce yooou doit installer chocolaté
Voici le lien https://community.chocolatey.org/packages/openjdk11
Vous mentionnez à la fois JDK 18 et 11 ici, c'est un peu déroutant?
Il s'agit d'un Problème connu lors de l'utilisation de GSON et de la réflexion pour analyser JSON . Mise à jour de votre version du plugin Android Gradle à 7.0.0+ et l'erreur devrait disparaître.