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

Ana*_*wan 125 android react-native react-native-android

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.
Run Code Online (Sandbox Code Playgroud)

当我升级到 Mac os Big sur 并运行时,

npx react-native run-android
Run Code Online (Sandbox Code Playgroud)

我收到此错误(Android)。我从 Stack Overflow 尝试了很多解决方案,但都没有奏效。

我创建了一个新项目并且它正在运行。此外,一些旧项目也运行良好。

*react-native Version: "0.63.3",*
Run Code Online (Sandbox Code Playgroud)

请帮我找到解决办法?

Cri*_*mez 278

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

您只需要更改您的 java home 并将 java 二进制文件添加到您的 .zshrc 以找到您的 java home 执行:

/usr/libexec/java_home -V | grep jdk
Run Code Online (Sandbox Code Playgroud)

输出应类似于以下内容:

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
Run Code Online (Sandbox Code Playgroud)

在我的情况下,您应该从说 SDK 的那条路走

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

之后,您只需将以下内容添加到应该在您家中的 .zshrc 的末尾。

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

vim .zshrc
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

export JAVA_HOME=the/path/you/copied/before
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

在我的情况下,/path/you/copyed/before 在哪里

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

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

如果在编辑 .zshrc 文件时出现错误“.zshrc”E212:无法打开文件进行写入,则使用 sudo vim.zshrc 即可进行编辑。

错误应该得到解决。

  • 感谢您的帮助,效果非常好。我认为更新到 Big Sur 后问题发生在我身上 (46认同)
  • 谢谢!!!!更新到 Big Sur 后,这个问题持续了三周 (9认同)

tom*_*wel 82

就我而言:

我使用了/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
Run Code Online (Sandbox Code Playgroud)

改了.zshrc也没解决问题。

最后,我抄tools.jar/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/lib//Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/和解决的问题。

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

  • 设置 JAVA_HOME 对我来说也不起作用。复制tools.jar确实有效,但就像你们俩所说的那样可能会导致问题。相反,我使用 Java 的卸载工具 (https://www.java.com/en/download/uninstalltool.jsp) 从我的 Mac 上卸载 Java。Java 只知道它的互联网插件位置,而不知道终端已经知道的其他 2 个安装的 java 版本(虚拟机)。卸载时,仅删除了互联网插件之一。java_home 自动重置为其他文件夹之一。现在我安装了少一版本的java,但没有文件复制。 (5认同)
  • 为我工作。不知道什么时候它会在我脸上爆炸...... (3认同)
  • @Nemus 右键单击​​ JavaAppletPlugin.plugin 并选择“显示包内容”。 (2认同)

小智 17

这对我有用-

  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. 再次运行你的项目


Sti*_*ich 10

由于我的 mac 上没有~/.zshrc,这些步骤解决了该问题:

1)找到你的java home执行:

/usr/libexec/java_home -V | grep jdk
Run Code Online (Sandbox Code Playgroud)

我看到这个:

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
Run Code Online (Sandbox Code Playgroud)

2)要编辑.bashrc,我使用了以下命令:

nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

我看到~/.bashrc的下一个内容:

# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
Run Code Online (Sandbox Code Playgroud)

3)我在~/.bashrc的末尾添加了 2 个字符串:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

其中 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
Run Code Online (Sandbox Code Playgroud)

请注意 - 路径应位于引号“”内

4)关闭所有终端窗口并再次构建Android。


Roy*_*ack 9

如果您的 ~/.zshrc 中有类似于以下内容的内容:

export JAVA_HOME=$(/usr/libexec/java_home -v1.8)
Run Code Online (Sandbox Code Playgroud)

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

/usr/libexec/java_home -V
Run Code Online (Sandbox Code Playgroud)

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

export JAVA_HOME=$(/usr/libexec/java_home -v1.8.0_261)
Run Code Online (Sandbox Code Playgroud)

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

source ~/.zshrc编辑并保存后不要忘记


小智 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
Run Code Online (Sandbox Code Playgroud)

重新启动计算机。

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

重新启动计算机。


小智 5

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

匹配Java虚拟机(2):1.8.152.16(x86_64)“Oracle Corporation”-“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. 好的