【问题标题】:Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation找不到 tools.jar。请检查 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 是否包含有效的 JDK 安装
【发布时间】:2021-03-06 04:39:08
【问题描述】:
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",*

请帮我找到解决办法?

【问题讨论】:

标签: android react-native react-native-android


【解决方案1】:

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

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

/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/copyed/before 在我的情况下会在哪里

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

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

如果在编辑 .zshrc 文件时出现错误 ".zshrc" E212: Can't open file for writing 然后使用 sudo vim.zshrc 就可以编辑了。

错误应该已经解决了。

编辑

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

【讨论】:

  • 感谢您的完美工作。我认为在更新到 Big Sur 后问题发生在我身上
  • 谢谢!!!!更新到 Big Sur 后,我有这个问题持续了三周
  • 尝试在 vim 中保存文件 zshrc 后我得到 ---> ".zshrc" E212: Can't open file for writing
  • @МаксимПетлюк 您可以使用您喜欢的任何其他文本编辑器。
  • @CristianGomez 是的,但关键是 mac os 似乎不会给我机会更改该文件。即使在另一个文本编辑器中,即使在授予它写入权限等之后。
【解决方案2】:

就我而言:

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

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

【讨论】:

  • 为我工作。不知道这什么时候会在我的脸上爆炸......
  • 设置 JAVA_HOME 对我也不起作用。复制 tools.jar 确实有效,但就像你们俩所说的那样,可能会导致问题。相反,我使用 Java 的卸载工具 (java.com/en/download/uninstalltool.jsp) 从我的 mac 卸载 Java。 Java 只知道它的 Internet 插件位置,并且不知道该终端已经知道安装的其他 2 个 Java 版本(虚拟机)。当它卸载时,它只删除了一个互联网插件。 java_home 自动重置为其他文件夹之一。现在我少安装了一个 java 版本,但没有文件复制。
  • 这也解决了我的问题...你节省了很多
  • 还最终将“JavaAppletPlugin.plugin”移动到另一个文件夹,java_home 恢复到列出的其他路径之一,现在可以使用。
  • @Nemus 右键单击​​ JavaAppletPlugin.plugin 并选择“显示包内容”。
【解决方案3】:

这对我有用 -

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

【讨论】:

  • 有效!!!它节省了我的时间。我正在使用“react-native”:“^0.64.0”,
  • 这对我也有用,不需要弄乱 tools.jar 或其他 JAVA_HOME 选项......我的系统上也没有 .bashrc 或 .zshrc。
  • 对我也有用... react-native-cli: 2.0.1 react-native: 0.64.2 还买了一台新Mac..
  • 这也帮助我为 Android 构建了 Flutter。
【解决方案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

重启电脑。

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

重启电脑。

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      1) 找到您的 java home 执行:

      /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" 取自 STEP 1(!):

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

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

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

      【讨论】:

        【解决方案7】:
        1. /usr/libexec/java_home -V | grep jdk

        匹配Java虚拟机(二): 1.8.152.16 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-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 Plug-Ins”,删除JavaAppletPlugin.plugin

        2. 好的

        【讨论】:

        • 嗨@xushao - 您的回答似乎没有比接受高度评价的答案添加任何内容。如果您有其他有用的东西要添加,请编辑该答案并添加它
        • 我实在是太感谢你了......你先生是个天使!
        • 最简单的解决方案。为我工作。非常感谢
        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

          当您的系统上有 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
          

          【讨论】:

            【解决方案10】:

            在终端上运行此命令

            /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
            

            【讨论】:

              【解决方案11】:

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

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

              【讨论】:

                【解决方案12】:

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

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

                再次运行你的项目 react-native run-android

                原答案:Link

                【讨论】:

                • 这行得通(耶!!),但人们可能想仔细检查他们的路径:我打开Applications,右键单击“Android Studio.app”选择“显示包内容”,然后导航到 /Contents/jre。我发现我的系统上没有jdk,所以我的路径是:org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/Home
                【解决方案13】:

                在我的 mac big sur SSD 上,只需下载 jdk 即可

                【讨论】:

                  【解决方案14】:

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

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

                  【讨论】:

                    【解决方案15】:

                    升级 Android Studio 对我有用

                    【讨论】:

                      【解决方案16】:

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

                      【讨论】:

                        【解决方案17】:

                        JDK 16 没有 tools.jar 文件。

                        1. 下载 JDK 8,从 /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib 复制 tools.jar 文件
                        2. 在 /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/lib 的 JDK 16 文件夹中过去

                        【讨论】:

                          【解决方案18】:

                          如果您使用的是 Unity:

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

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

                          export JAVA_HOME="{Paste value with quotes}"
                          

                          【讨论】:

                            【解决方案19】:

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

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

                            【讨论】:

                              【解决方案20】:

                              重新安装 java jdk 对我有用。

                              在终端:

                              brew tap adoptopenjdk/openjdk
                              brew install --cask adoptopenjdk8
                              

                              【讨论】:

                                【解决方案21】:

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

                                【讨论】:

                                  猜你喜欢
                                  • 2021-10-07
                                  • 2021-04-18
                                  • 2018-04-27
                                  • 2017-07-07
                                  • 1970-01-01
                                  • 2019-06-02
                                  • 1970-01-01
                                  • 2021-07-05
                                  相关资源
                                  最近更新 更多