179 votes

Impossible de trouver tools.jar. Veuillez vérifier que /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contient une installation JDK valide.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-linear-gradient:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

Quand j'ai fait la mise à jour vers Mac Os Big sur et run,

npx react-native run-android

J'ai obtenu cette erreur (Android). J'ai essayé de nombreuses solutions à partir de Stack Overflow, mais aucune n'a fonctionné.

J'ai créé un nouveau projet et il fonctionne. Certains des anciens projets fonctionnent également parfaitement.

*react-native Version: "0.63.3",*

Veuillez m'aider à trouver une solution.

0 votes

Cela répond-il à votre question ? Gradle ne trouve pas tools.jar

0 votes

0 votes

Pour les utilisateurs de MacOS, consultez ma réponse sur un autre fil de discussion : Échec de l'exécution de la tâche ':app:compileDebugJavaWithJavac'. > Impossible de trouver tools.jar

388voto

Cristian Gomez Points 1473

Le problème est qu'avec la mise à jour, le java intégré a pris le dessus et il n'a pas le SDK car il s'agit juste du runtime.

Il vous suffit de changer votre home java et d'ajouter le binaire java à votre .zshrc. pour trouver l'exécution de votre home java :

/usr/libexec/java_home -V | grep jdk

le résultat devrait être similaire à ce qui suit :

Matching Java Virtual Machines (1):
1.8.0_272 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

vous devez prendre le chemin à partir de celui qui dit SDK dans mon cas

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

Après cela, il suffit d'ajouter ce qui suit à la fin de votre .zshrc qui doit se trouver dans votre maison.

Vous pouvez l'éditer avec (si vous décidez d'utiliser vim, vous pouvez sortir en écrivant :wq ! et en appuyant sur entrée)

vim .zshrc

ajoutez ce qui suit :

export JAVA_HOME=the/path/you/copied/before
export PATH=$JAVA_HOME/bin:$PATH

où le/le chemin/la copie/avant dans mon cas serait

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

sauvegarder le fichier et fermer tous vos terminaux et les ouvrir à nouveau.

Si lors de l'édition du fichier .zshrc, vous obtenez l'erreur ".zshrc" E212 : Can't open file for writing". alors utilisez sudo vim.zshrc et vous serez en mesure d'éditer.

L'erreur devrait être résolue.

120voto

tomfriwel Points 633

Dans mon cas :

J'ai utilisé la commande /usr/libexec/java_home -V | grep jdk Cristian Gomez fourni, a obtenu deux chemins :

Matching Java Virtual Machines (2):
    1.8.181.13 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_111 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

Changer le .zshrc n'a pas résolu le problème.

Finalement, j'ai copié tools.jar en /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib/ a /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/ et a résolu le problème.

Je ne sais pas si cette approche entraînera des problèmes inconnus.

3 votes

Ça a marché pour moi aussi. Je ne sais pas quand ça va m'exploser à la figure...

13 votes

Définir JAVA_HOME n'a pas fonctionné pour moi non plus. Copier tools.jar a fonctionné, mais comme vous l'avez dit tous les deux, cela pourrait causer des problèmes à l'avenir. A la place, j'ai utilisé l'outil de désinstallation de Java ( java.com/fr/download/uninstalltool.jsp ) pour désinstaller Java de mon mac. Java ne connaissait que l'emplacement de ses plugins internet, et n'était pas au courant des 2 autres versions de java installées que le terminal connaissait déjà (machines virtuelles). Lorsqu'il s'est désinstallé, il n'a supprimé que l'emplacement des plugins Internet. Le dossier java_home s'est réinitialisé automatiquement dans l'un des autres dossiers. Maintenant, j'ai une version de java de moins installée, mais pas de copie de fichiers.

0 votes

Cela a résolu mon problème aussi... vous avez sauvé beaucoup de choses.

39voto

Yokesh Sankar Points 81

Cela a marché pour moi -

  1. Allez dans le dossier Android > fichier gradle.properties > ajoutez la ligne suivante org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home // chemin vers le JDK

  2. Exécutez à nouveau votre projet

0 votes

Ça marche ! !! Il m'a fait gagner du temps. J'utilise "react-native" : "^0.64.0",

0 votes

Cela a également fonctionné pour moi, sans avoir à manipuler tools.jar ou d'autres options JAVA_HOME... pas de .bashrc ni de .zshrc sur mon système non plus.

9voto

Stich Points 292

Comme je n'ai pas ~/.zshrc Sur mon Mac, ces étapes ont résolu le problème :

1)Pour trouver votre home java exécutez :

/usr/libexec/java_home -V | grep jdk

et je vois ça :

Matching Java Virtual Machines (2):
1.8.271.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_171 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

2)Pour éditer .bashrc J'ai utilisé cette commande :

nano ~/.bashrc

et je vois le prochain contenu de mon ~/.bashrc :

# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"

3)J'ai ajouté 2 cordes à la FIN de la ~/.bashrc :

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"

où le chemin JAVA_HOME - "/Bibliothèque/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contenus/Home" est tiré de l'ÉTAPE 1( !):

1.8.0_171 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

Veuillez noter que les chemins doivent être entre guillemets "".

4)Fermez tous les terminaux Windows et construisez Android à nouveau.

8voto

RoyalBigMack Points 101

Si vous avez quelque chose dans votre ~/.zshrc qui ressemble à ceci :

export JAVA_HOME=$(/usr/libexec/java_home -v1.8)

juste comme tomfriwell écrit, tu peux courir :

/usr/libexec/java_home -V

pour voir les chemins de vos JVMs installées et ensuite spécifier celle que vous souhaitez que vous souhaitez utiliser, par exemple

export JAVA_HOME=$(/usr/libexec/java_home -v1.8.0_261)

et cela va lier la JVM désirée à votre commande java

n'oubliez pas de source ~/.zshrc après avoir édité et sauvegardé

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X