Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation

回答 24 浏览 12.3万 2020-11-23
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.

当我升级到Mac os Big sur和运行的时候。

npx react-native run-android

我遇到了这个错误(Android)。我已经尝试了Stack Overflow上的很多解决方案,但都没有成功。

我已经创建了一个新的项目,它正在工作。另外,一些旧的项目也在完美地工作。

*react-native Version: "0.63.3",*

请帮助我找到一个解决方案?

Anandu Viswan 提问于2020-11-23
这是否回答了你的问题?Gradle 找不到 tools.jaremkarachchi 2020-12-04
对于MacOS用户,请查看我在另一个主题上的答案。任务执行失败 ':app:compileDebugJavaWithJavac'。 > 找不到 tools.jarNatan Lotério 2021-01-04
@NatanLotério救了我的命。Ronaldo Bahia 2021-01-07
24 个回答
#1楼 已采纳
得票数 379

问题是,随着更新,内置的java优先,它没有SDK,因为它只是运行时。

你只需要改变你的java首页,并将java二进制文件添加到你的.zshrc中,以找到你的java首页的执行。

/usr/libexec/java_home -V | grep jdk

输出应该类似于下面的内容。

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

在我的案例中,你应该从写有SDK的那条路径上走。

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

之后,你只需在你的.zshrc末尾添加以下内容,该内容应该在你的主页上。

你可以用(如果你决定使用vim,你可以写:wq!然后按回车键退出)编辑它。

vim .zshrc

添加以下内容。

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

在我的例子中,/path/you/copied/before将是

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

保存文件并关闭所有的终端,然后再打开它们。

如果在编辑.zshrc文件时遇到错误".zshrc"E212:无法打开文件进行写入,那么使用sudo vim.zshrc,你就可以进行编辑了。

这个错误应该可以解决了。

编辑部

而不是~/.zshrc,你可以有~/.bash_profile~/.bash_rc,所以要相应地编辑你的。

Cristian Gomez 提问于2020-11-24
TSR 修改于2021-10-27
谢谢你,工作得很好。我认为这个问题是在更新到大苏尔之后发生的。Fazberry 2020-11-26
谢谢!!!!我有这个问题三个星期了,在更新到大苏尔之后Israel Alfaro 2020-12-05
在vim中尝试保存文件zshrc后,我得到了 ---> ".zshrc" E212: Can't open file for writing.Максим Петлюк 2020-12-27
@МаксимПетлюк 你可以使用你喜欢的任何其他文本编辑器。Cristian Gomez 2020-12-27
@dafunker 更新如何让 java_home 找到正确的路径?对我来说,/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home路径是它返回的唯一路径,而/Library/Java/JavaVirtualMachines/目录中没有任何东西。0xTomato 2022-01-10
#2楼
得票数 115

在我的情况下。

我使用了/usr/libexec/java_home -V | grep jdkCristian Gomez提供的命令,得到了两个路径。

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

改变.zshrc并没有解决这个问题。

最后我把tools.jar中的/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib/复制到/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/中,解决了这个问题。

我不知道这种方法是否会导致任何未知的问题。

tomfriwel 提问于2020-12-09
tomfriwel 修改于2021-01-07
对我来说是有效的。不知道什么时候会在我面前炸开锅......samzmann 2020-12-17
设置JAVA_HOME对我也不起作用。复制 tools.jar 确实有效,但就像你们两个人说的那样,可能会导致以后的问题。相反,我用Java的卸载工具(java.com/en/download/uninstalltool.jsp)从我的Mac上卸载了Java。Java只知道它的互联网插件的位置,而不知道终端已经知道的其他两个版本的java的安装(虚拟机)。当它卸载时,它只删除了互联网插件的那个版本。java_home自动重置到其他文件夹中。现在我少装了一个版本的java,但没有文件复制。Heinous Games 2020-12-22
这也解决了我的问题......你救了很多人。Amani 2020-12-28
最后还把'JavaAppletPlugin.plugin'移到了另一个文件夹,java_home恢复到了所列的其他路径之一,目前还能正常工作。halfpad 2021-02-15
@Nemus 右键单击JavaAppletPlugin.plugin,并选择"显示包的内容"。tomfriwel 2021-07-30
#3楼
得票数 38

这对我来说很有效--------。

  1. Goto android folder > gradle.properties file > add below line org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home // 通往JDK的路径

  2. 再次运行你的项目

Yokesh Sankar 提问于2021-03-17
Pratik Butani 修改于2021-08-18
它很有效!!!它节省了我的时间。它节省了我的时间。我正在使用"react-native": "^0.64.0"。sahu 2021-04-16
这对我来说也很有效,不需要在tools.jar或其他JAVA_HOME选项上做手脚......我的系统上也没有.bashrc或.zshrc。Azurlake 2021-06-28
对我来说也是如此... react-native-cli: 2.0.1 react-native: 0.64.2 还买了一台新的Mac...UnicornRainbows 2021-07-27
这对我在为安卓系统构建Flutter时也有帮助。Josh Metcalfe 2021-08-13
成功了,只是必须删除"/jdk"部分!我建议检查路径以找到正确的路径MasterPiece 2022-04-10
#4楼
得票数 8

如果你在你的~/.zshrc中有类似这样的东西。

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

就像tomfriwell所写的那样,你可以跑。

/usr/libexec/java_home -V

查看你所安装的JVM的路径,然后指定你想使用的JVM。 例如。

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

这将把所需的JVM链接到你的java命令中。

在编辑和保存之后,不要忘记source ~/.zshrc

RoyalBigMack 提问于2021-04-18
#5楼
得票数 7

由于我的mac上没有~/.zshrc,所以这些步骤解决了这个问题。

1)找到你的java主页,执行。

/usr/libexec/java_home -V | grep jdk

而且我看到了这一点。

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)为了编辑.bashrc,我使用了这个命令。

nano ~/.bashrc

而且我看到了我的~/.bashrc的下一个内容。

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

3)我在~/.bashrc的结尾处添加了两个字符串。

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

其中 JAVA_HOME 路径 - "/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home" 取自步骤 1(!)。

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

请注意--路径应在引号""内。

4)关闭所有终端窗口,并再次构建安卓系统。

Stich 提问于2021-06-02
#6楼
得票数 6

这个方法对我有用。从新的安装中启动Java。

sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/Java/JavaVirtualMachines
sudo rm -rf /Library/Application\ Support/Oracle/Java/
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane

重新启动计算机。

下载并安装Java jdk-8u271-macosx-x64

重新启动计算机。

daozi 提问于2020-11-24
#7楼
得票数 5
  1. /usr/libexec/java_home -V | grep jdk

匹配的Java虚拟机(2):1.8.152.16(x86_64)"Oracle公司" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 1.8.0_152 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home

  1. 打开"/Library/Internet Plug-Ins",删除JavaAppletPlugin.plugin。

  2. 好的

xushao 提问于2021-04-02
Hi @xushao - 你的答案似乎没有比那个被高度认可的答案增加任何内容。如果你有一些额外的有用的内容,那么请编辑该答案并将其加入。Mr R 2021-04-02
我对你的感激之情溢于言表....,你是一个天使。Farrukh Chishti 2021-07-03
最简单的解决方案。对我来说是有效的。谢谢你Vishnu M Menon 2022-01-11
#8楼
得票数 4

如果你是在mac & tool.jar没有找到。那么首先检查你的.zshrc.bashrc中是否有JAVA_HOME

如果它是存在的,那么就用下面这行&来改变;如果它不存在,就添加它。

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home 

在添加上述行后,运行以下命令。

source ~/.zshrc

or

source ~/.bashrc

注意:请确保你已经安装了Android Studio。

Rahul 提问于2021-05-18
#9楼
得票数 4

当你的系统上有2个Javas时。

    ~ % /usr/libexec/java_home -V | grep jdk
Matching Java Virtual Machines (2):
    1.8.291.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_144 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

试着将"Java SE"路径添加到你的gradle.properties中,因为只有该软件包包含tools.jar

org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
goodhyun 提问于2021-06-24
#10楼
得票数 3

这是因为无法检测到有效的jdk路径。 进入你的项目,打开android文件夹>gradle.properties文件>添加以下一行

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

再次运行你的项目 react-native run-android

原始答案。链接

Ashwin J 提问于2021-04-26
这很有效(耶!!),但人们可能想仔细检查他们的路径。我打开Applications,右键点击'Android Studio.app',选择'显示软件包内容',然后导航到/Contents/jre。我发现在我的系统上没有jdk,所以我的路径是。org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/HomeKeith DC 2021-08-08
#11楼
得票数 3

在终端机上运行此命令

/usr/libexec/java_home -V | grep jdk

输出量

Matching Java Virtual Machines (2):
        1.8.291.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
        1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

复制tool.jar,从

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib

并将其粘贴到

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

安装JDK的命令

brew install --cask adoptopenjdk/openjdk/adoptopenjdk8

在主目录下的.base_profile.zshrc中加入以下路径

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
Kirit Vaghela 提问于2021-07-08
#12楼
得票数 2

尝试在android/gradle.properties文件中设置JAVA HOME。这对我来说很有效。

更多信息请访问https://dev.to/larrydanny/could-not-find-tools-jar-4363

Parameshwar Ande 提问于2021-03-14
#13楼
得票数 1

在我的mac big sur SSD上,只需下载jdk就能帮助我。

Siddharth Sogani 提问于2021-02-14
#14楼
得票数 1

使用/usr/libexec/java_home -V | grep jdk找到2个位置,然后

从"/Library/Internet Plug-Ins"中删除JavaAppletPlugin.plugin对我来说是有效的。

Solvik 提问于2021-07-14
#15楼
得票数 0

升级Android Studio对我来说是有效的

Dazzle 提问于2021-01-09
#16楼
得票数 0

我在MAC系统首选项中进入java,尝试更新java,要求删除未使用的版本,删除后终于成功了。

Issa Lafi 提问于2021-01-17
#17楼
得票数 0

JDK 16没有tools.jar文件。

  1. 下载JDK 8,从/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib中复制tools.jar文件。
  2. 在/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib的JDK16文件夹中粘贴它。
Aditya Birangal 提问于2021-06-26
#18楼
得票数 0

如果你使用的是Unity。

打开首选项 ->外部工具 在Android/JDK下点击复制路径 在此输入图片描述

然后打开终端,将其设置为你的Java首页。

export JAVA_HOME="{Paste value with quotes}"
Fernando Bonet 提问于2021-07-26
#19楼
得票数 0

转到android文件夹 -> gradle.properties -> 添加你的java sdk路径,如下图所示

org.gradle.java.home=/Users/userName/Library/Java/JavaVirtualMachines/corretto-1.8.0_302/Contents/Home/jre
Navin Kumar 提问于2021-08-11
#20楼
得票数 0

我遇到了同样的问题,但这是因为我安装了太多的JDk。我在MAC M1上,不确定我应该使用什么JDk。最新的JDK 17不被我的项目所支持,我需要JDK 8 ARM。 我从这里得到了https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk

但是我遇到了和OP一样的问题。但这是因为我有太多版本的JDK,而且我不知道Android studio从哪里得到要使用哪个JDK的信息。

/usr/libexec/java_home -V找到了所有的JDK,并手动删除了所有的JDK,除了ARM版本。

JDK安装在Macintosh HD/Library中,而不是在Users中。

paakjis 提问于2022-02-15
#21楼
得票数 0

我的问题是zsh和bash对jdk的路径不一致。因此,作为一个额外的理智检查,你可以检查你正在运行的终端。使用PATH设置的那个。

Dian Labuschagne 提问于2022-07-05
#22楼
得票数 -1

重新安装java jdk对我来说是有效的。

在终点站。

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8
Tal Spektor 提问于2021-09-07
sta 修改于2021-09-07
#23楼
得票数 -1

我已经使用了每一种方法,并发现了对我有效的方法,所以我决定为其他人编译它。 正如@Heinous_Games在评论区所告诉的,安装Java卸载工具,它将从您的系统中删除Java,为了确保它发挥作用,从终端手动运行这个工具:

sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/Java/JavaVirtualMachines
sudo rm -rf /Library/Application\ Support/Oracle/Java/
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane

进入Java下载页面,下载适合你的系统的文件,在我的例子中是"macOS x64 DMG Installer",然后按照指示操作。 我希望它能发挥作用,如果它不能,那么重新启动一次你的系统。

abdemirza 提问于2022-02-08
并不是每个人都有管理权限 :(eidolon1138 2022-02-08
然后尝试其他适合你的方法。这个方法对我有用abdemirza 2022-02-10
#24楼
得票数 -4

将Android Studio升级到4.0,你就可以开始工作了

Luis Izquierdo 提问于2021-03-18