48
votes

Comment corriger le «module Java.base» n'ouvre pas l'erreur de «module sans nom» dans Android Studio?

Background

  1. J'ai commencé mon premier projet dans Android Studio pour me familiariser avec la programmation Android.
  2. Je suis ce tutoriel , dans lequel
  • J'ai créé une nouvelle activité vide de projet, sans aucun changement
  • Il est censé simuler une application simple qui montre le message "Hello World"

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 :

  1. Version du plugin Android Gradle: 4.2.1
  2. Gradle Version: 7.0.1 (modifié pour résoudre un autre problème que j'ai eu lors de la synchronisation du gradle ("Gradle Sync a échoué: fichier de classe non pris en charge la version majeure 60") et la discussion basée sur ceci Forum comme cité ci-dessous)
  3. 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).

    1. JDK: 16.0.1
    2. toute suggestion ou idée?


0 commentaires

14 Réponses :


0
votes

Vérifiez si JDK est installé ou ne configurez pas votre SDK également et réessayez Vous pouvez télécharger jdkfrom java se


1 commentaires

Oui, ils sont à la fois configurés et configurés dans la section Structure du projet



14
votes

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.


8 commentaires

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.



12
votes

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.

  • Téléchargez essentiellement JDK 8 (1.8) et installez-le.
  • Changer la variable d'environnement (écrivez JDK 8 Variable Path to Environment)
  • Modifiez ensuite la structure de votre projet et écrivez JDK 8 Chemin vers JDK Location.
  •  Entrez la description de l'image ici

    1. Invalider les caches et redémarrer Android Studio.
    2. Construisez votre projet et cela devrait fonctionner.

    3. 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'
      


    0 commentaires

    7
    votes

    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:

  • CD / APPLICATIONS / Android \ Studio.app/contents/jre
  • ln -s ../jre jdk
  • Ln -s "/ Library / Internet Plug-ins / javaappletplugin.plugin" jdk

  • 3 commentaires

    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)



    2
    votes

    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.


    1 commentaires

    La rétrogradation ne retarde que les problèmes, cela ne les résout pas.



    78
    votes

    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
    


    4 commentaires

    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



    4
    votes

    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>


    0 commentaires

    1
    votes

    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


    0 commentaires

    35
    votes

    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 \ Fichier d'écran pour gradle-wrapper.properties 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 ClassPath dans Build.gradle Fichier 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


    2 commentaires

    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



    1
    votes

    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') dans Android / build.gradle


    0 commentaires

    0
    votes

    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.


    1 commentaires

    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



    1
    votes

    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é.


    0 commentaires

    -2
    votes

    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


    1 commentaires

    Vous mentionnez à la fois JDK 18 et 11 ici, c'est un peu déroutant?



    1
    votes

    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.


    0 commentaires