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上的很多解决方案,但都没有成功。
我已经创建了一个新的项目,它正在工作。另外,一些旧的项目也在完美地工作。
*react-native Version: "0.63.3",*
请帮助我找到一个解决方案?
问题是,随着更新,内置的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
,所以要相应地编辑你的。
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
路径是它返回的唯一路径,而/Library/Java/JavaVirtualMachines/
目录中没有任何东西。
- 0xTomato 2022-01-10
在我的情况下。
我使用了/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
并没有解决这个问题。
最后我把tools.jar
中的/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib/
复制到/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/
中,解决了这个问题。
我不知道这种方法是否会导致任何未知的问题。
这对我来说很有效--------。
Goto android folder > gradle.properties file > add below line org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
// 通往JDK的路径再次运行你的项目
如果你在你的~/.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
。
由于我的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)关闭所有终端窗口,并再次构建安卓系统。
这个方法对我有用。从新的安装中启动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。
重新启动计算机。
- /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
打开"/Library/Internet Plug-Ins",删除JavaAppletPlugin.plugin。
好的
如果你是在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。
当你的系统上有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
这是因为无法检测到有效的jdk路径。 进入你的项目,打开android文件夹>gradle.properties文件>添加以下一行
org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
再次运行你的项目 react-native run-android
原始答案。链接
Applications
,右键点击'Android Studio.app',选择'显示软件包内容',然后导航到/Contents/jre。我发现在我的系统上没有jdk,所以我的路径是。org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/Home
- Keith DC 2021-08-08
在终端机上运行此命令
/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
尝试在android/gradle.properties文件中设置JAVA HOME。这对我来说很有效。
更多信息请访问https://dev.to/larrydanny/could-not-find-tools-jar-4363。
在我的mac big sur SSD上,只需下载jdk就能帮助我。
使用/usr/libexec/java_home -V | grep jdk找到2个位置,然后
从"/Library/Internet Plug-Ins"中删除JavaAppletPlugin.plugin对我来说是有效的。
升级Android Studio对我来说是有效的
我在MAC系统首选项中进入java,尝试更新java,要求删除未使用的版本,删除后终于成功了。
JDK 16没有tools.jar文件。
- 下载JDK 8,从/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib中复制tools.jar文件。
- 在/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib的JDK16文件夹中粘贴它。
如果你使用的是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
我遇到了同样的问题,但这是因为我安装了太多的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中。
我的问题是zsh和bash对jdk的路径不一致。因此,作为一个额外的理智检查,你可以检查你正在运行的终端。使用PATH设置的那个。
重新安装java jdk对我来说是有效的。
在终点站。
brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8
我已经使用了每一种方法,并发现了对我有效的方法,所以我决定为其他人编译它。 正如@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",然后按照指示操作。 我希望它能发挥作用,如果它不能,那么重新启动一次你的系统。
将Android Studio升级到4.0,你就可以开始工作了