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

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",*

请帮助我找到一个解决办法?

128174 次浏览

这对我很有用: 从新安装开始 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 二进制文件添加到您的.zhrc 找到你的 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

在那之后,您只需将以下内容添加到您的.zhrc 的末尾,它应该在您的 home 中。

您可以编辑它(如果您决定使用 vim,您可以退出写作: wq! 并按回车键)

vim .zshrc

加入以下内容:

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

在我的例子中,前面的/path/you/copy/在哪里

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

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

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

这个错误应该解决。

剪辑

你可以用 ~/.bash_profile或者 ~/.bash_rc代替 ~/.zshrc,因此相应地编辑你的

就我而言:

我使用了提供的命令 /usr/libexec/java_home -V | grep jdk 克里斯蒂安 · 戈麦斯,得到了两条路径:

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 大 SSD 上,只要下载 jdk 就能帮上忙

尝试在 android/gradle.properties 文件中设置 JAVA HOME。

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

这对我很管用

  1. //到 JDK 的路径

  2. 再次运行您的项目

将 Android Studio 升级到4.0,然后就可以开始了

  1. /usr/libexec/java _ home-V | grep jdk

配对 Java 虚拟机(2) : 1.8.152.16(x86 _ 64)“甲骨文公司”-“ Java”/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/content/Home 1.8.0 _ 152(x86 _ 64)“甲骨文公司”-“ Java SE 8”/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 152. jdk/content/Home

  1. 打开“/Library/Internet Plug-Ins”,删除 JavaAppletPlugin.plugin

  2. 好的

如果你的 ~/. zhrc 中有类似这样的东西:

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

就像 Tomfriwell写的,你可以运行:

/usr/libexec/java_home -V

查看已安装的 JVM 的路径,然后指定哪个路径 喜欢使用。例如:

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

它会将所需的 JVM 链接到您的 java 命令

编辑和保存后不要忘记使用 source ~/.zshrc

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

Home =/Applications/Android 应用程序/内容/jre/jdk/内容/主页

再次运行您的项目

原答案: 林克

如果你在 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 电脑上没有 ~/. zhrc,这些步骤解决了这个问题:

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 path-“/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 171. jdk/Content/Home”取自步骤1(!) :

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

请注意-路径应该在引号内

4)关闭所有终端窗口,重新构建 Android。

当你的系统上有两个 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

尝试将“ JavaSE”路径添加到 gradle.properties中,因为只有该包包含 tools.jar

org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

JDK 16没有 tools.jar 文件。

  1. 下载 JDK 8,从/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 291. JDK/content/Home/lib 复制 tools.jar 文件
  2. 通过/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 291. JDK/Content/Home/lib 的 JDK 16文件夹

在终端上运行此命令

/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

将以下路径添加到 Home 目录下的 . base _ profile。 zhrc

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个位置

从“/Library/Internet Plug-Ins”中删除 JavaAppletPlugin.plugin 对我来说很有用。

如果你正在使用 Unity:

打开首选项-> 外部工具 在 Android/JDK 下单击“复制路径” enter image description here

然后打开终端设置为你的 Java 主页:

export JAVA_HOME="{Paste value with quotes}"

Goto android 文件夹 -> Gradle 房地产公司-> 添加你的 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

我已经使用了所有的方法,并且找到了适合我的方法,所以我决定为其他人编译它。 正如 @ 十恶不赦 _ 游戏在注释部分告诉我们的那样,安装 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”) ,并按照说明操作。 我希望它工作,如果它不然然后重新启动您的系统一次。

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

但我和观察所有同样的问题。但这是因为我有太多的 JDK 版本,而且我不知道 Android 工作室会把要使用的 JDK 信息带到哪里去。

使用 /usr/libexec/java_home -V查找所有的 JDK 并手动删除除 ARM 版本之外的所有主题。

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

我的问题是 zsh 和 bash 到 jdk 的路径不同。因此,作为一个额外的健全性检查,您可以检查您正在运行的终端。使用设置 PATH 时使用的。