找不到 tools.jar。请检查 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 是否包含有效的 JDK 安装

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

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 的解决方案,但是 none 其中的解决方案有效。

我创建了一个新项目并且正在运行。还有一些旧项目也运行良好。

*react-native Version: "0.63.3",*

请帮我找到解决办法?

这对我有用:从全新安装开始 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

重启电脑。

下载并安装Javajdk-8u271-macosx-x64

重启电脑。

问题是随着更新,内置 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

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

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

保存文件并关闭所有终端并再次打开它们。

如果在编辑 .zshrc 文件时出现错误“.zshrc”E212:无法打开文件进行写入 然后使用 sudo vim.zshrc 你就可以编辑了。

错误应该已解决。

编辑

您可以使用 ~/.bash_profile~/.bash_rc 而不是 ~/.zshrc,因此相应地编辑您的

就我而言:

我使用了/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 没有解决问题。

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

不知道这种做法会不会导致什么未知的问题

升级 Android Studio 对我有用

我在 MAC 系统偏好设置中转到 java 尝试更新 java 要求删除未使用的版本 删除后终于工作了

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

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

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

这对我有用 -

  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. 运行 又是你的项目

将 Android Studio 升级到 4.0,一切顺利

  1. /usr/libexec/java_home-V | grep jdk

匹配Java个虚拟机(2): 1.8.152.16 (x86_64)“甲骨文公司”-“Java”/Library/InternetPlug-Ins/JavaAppletPlugin.plugin/Contents/Home 1.8.0_152 (x86_64) "甲骨文公司" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home

  1. 打开“/Library/Internet 插件”,删除JavaAppletPlugin.plugin

  2. 好的

如果你的 ~/.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)

这将 link 所需的 JVM 到您的 java 命令

编辑并保存后别忘了source ~/.zshrc

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

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

运行 你的项目又是 react-native 运行-android

原答案:Link

如果您在 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。

因为我的 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:

的末尾添加了 2 个字符串
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)关闭所有终端windows并重新构建Android。

当您的系统上有 2 个 Java 时,

    ~ % /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

JDK 16 没有 tools.jar 文件。

  1. 下载JDK8,从/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib
  2. 复制tools.jar文件
  3. 过去 JDK 16 个文件夹位于 /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib

运行 终端上的这个命令

/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

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

从“/Library/Internet 插件”中删除 JavaAppletPlugin.plugin 对我有用。

如果您使用的是 Unity:

打开首选项 -> 外部工具 在 Android/JDK 下单击复制路径

然后打开终端,将其设置为您的 Java 家:

export JAVA_HOME="{Paste value with quotes}"

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

org.gradle.java.home=/Users/userName/Library/Java/JavaVirtualMachines/corretto-1.8.0_302/Contents/Home/jre

重新安装 java jdk 对我有用。

在终端中:

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8

我已经使用了每一种方法并找出了对我有用的方法,所以我决定将它编译下来供其他人使用。 正如 @Heinous_Games in the comment section, install Java Uninstall Tool 所说,它将从您的系统中删除 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 Downloads 页面并下载适合您系统的文件(在我的案例中为“macOS x64 DMG 安装程序”)并按照说明进行操作。 我希望它能正常工作,如果没有,请重新启动您的系统一次。

我遇到了同样的问题,但这是因为我安装了太多 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 工作室在哪里获取 JDK 使用的信息。

使用 /usr/libexec/java_home -V 找到所有 JDK 并手动删除了除 ARM 版本之外的所有文件。

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