找不到 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 jdk
Cristian 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
这对我有用 -
Goto android folder > gradle.properties file > add below line org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
// JDK
的路径
运行 又是你的项目
将 Android Studio 升级到 4.0,一切顺利
- /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
打开“/Library/Internet 插件”,删除JavaAppletPlugin.plugin
好的
如果你的 ~/.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 文件。
- 下载JDK8,从/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib
复制tools.jar文件
- 过去 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 中,而不是用户中。
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 jdk
Cristian 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
这对我有用 -
的路径Goto android folder > gradle.properties file > add below line org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
// JDK运行 又是你的项目
将 Android Studio 升级到 4.0,一切顺利
- /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
打开“/Library/Internet 插件”,删除JavaAppletPlugin.plugin
好的
如果你的 ~/.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 文件。
- 下载JDK8,从/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib 复制tools.jar文件
- 过去 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和.zshrcexport 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 中,而不是用户中。