【问题标题】:Gradle does not find tools.jarGradle 没有找到 tools.jar
【发布时间】:2012-07-05 21:48:12
【问题描述】:

我正在使用带有 gradle 的 javadoc doclet,所以我需要使用包 tools.jar,它位于 jdk 的 lib 文件夹中(在我的例子中是 1.6.0_26)。

关键是 gradle 不会自动获取它,所以我将该工具包添加到我的 libs 文件夹,然后将其添加到 dependencies.gradle 。

现在我想将它直接从我的 JDK 主页中导入到我的 dependencies.gradle 中。有没有办法做到这一点?我在 dependencies.gradle 中尝试了下一个:

compile files("${System.properties['java.home']}/lib/tools.jar")

但是编译的时候没有找到。

【问题讨论】:

  • 值得一提的是,作为解决这个问题的先行者,当我遇到这个问题时,你需要确保你确实安装了 JDK :P 并且,在某些系统上,你需要安装devel JDK包来获取tools.jar

标签: java gradle groovy build


【解决方案1】:

对于 Windows,将 Gradle 属性文件的 JDK 主路径添加为 org.gradle.java.home。 如果您没有 gradle.properties 文件,则创建一个新文件并添加

例如:org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_241

【讨论】:

    【解决方案2】:

    在 macOS Big Sur 中

    由于环境变量 JAVA_HOME 未在 macOS Big Sur 中正确设置而发生此问题。

    第 1 步 - 通过在终端中打印 JAVA_HOME 的值来确认您有问题。您很可能会得到一个空字符串。

    echo $JAVA_HOME
    

    第 2 步 - 在您的机器上找到正确的路径

    /usr/libexec/java_home -V
    

    复制与“Java SE 8”相关的路径,通常看起来像/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home

    第 3 步 - 使用 nano 编辑 .zshenv

    nano ~/.zshenv
    

    第 4 步 - 将第 2 步中的路径添加到文件中,如下所示

    export JAVA_HOME=YOUR_JAVA_PATH
    

    示例:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
    

    第 5 步 - 获取更新后的 .zshenv 文件以激活环境变量

    source ~/.zshenv
    

    第 6 步 - 打印以确认路径

    echo $JAVA_HOME
    

    【讨论】:

      【解决方案3】:

      我的 Android Studio 版本:4.2.1

      "tools.jar" 由 Oracle JDK 提供,这是 android studio 编译所需的 - 在我的 PC 上将 android studio 更新到最新版本后,我遇到了这个问题。

      要解决此问题,请按照以下步骤操作:

      1. 在 Android studio 文件 -> 项目结构 -> SDKs(在平台设置下)

        A) 如果假设中间窗格中不存在 JDK/JDK 主路径,则通过在中间窗格中按“+”符号添加 JDK 路径(中间窗格还包含已下载的 Android SDK)

        B) Java sdk 通常存在/安装在 64 位路径 => "C:\Program Files\Java\jdk1.X.Y_ABC"(在我的 PC 中是 1.8.0_202)或 32 位 => "C:\Program Files (x86)\Java\jdk1.X.Y_ABC"

      2. 如果假设您的 PC 中没有安装 JDK, 请从 Oracle Java 网站下载并安装 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

      1. 在系统环境变量中设置JDK和JRE路径(从步骤2中提到的网页下载)

        A) 按 windows 键输入“编辑系统环境变量”并打开应用程序

        B) 转到高级 -> 环境变量 在系统变量下添加 JAVA_HOME 和 JRE_HOME 如下

      Set Windows system environment variable

      1. 在用户变量下的 Path 环境变量中添加 jdk lib 路径(只有在前面的步骤没有解决错误时才需要此步骤) C:\Program Files\Java\jdk1.X.Y_ABC\lib

      【讨论】:

        【解决方案4】:

        找不到 tools.jar

        MacOS

        echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
        

        然后重启 Shell

        【讨论】:

          【解决方案5】:

          对我来说,在尝试使用音频播放器颤振库后出现此错误。 为了解决我得到了文件夹的 tools.jar:

          C:\Program Files\Android\Android Studio\jre\lib

          粘贴在上面

          C:\Program Files\Java\jre1.8.0_181\lib.

          在此之后构建工作正常。

          【讨论】:

            【解决方案6】:

            我在 Mac 上的解决方案:

            将此行添加到gradle.properties:

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

            不是这个:

            org.gradle.java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
            

            你可以打开最后一个主目录,会发现没有lib/tools.jar文件存在,所以把路径改成JavaVirtualMachines/jdk1.8.0_271.jdk就可以了。

            顺便说一句,在终端中,我回显了$JAVA_HOME,它得到了第一个路径,而不是第二个,我认为这就是我的 Gradle 无法正常工作的原因。

            【讨论】:

            • 谢谢!将 $JAVA_HOME 环境添加到我的 .zshrc 并将其添加到 gradle.properties 为我做了:D
            【解决方案7】:

            为我解决了以下问题:

            1. 在 C:\Program Files\Android\Android Studio\jre\lib 中找到 tools.jar
            2. 复制粘贴到 C:\Program Files (x86)\Java\jre1.8.0_271\lib
            3. 再次运行代码,它运行正常。

            【讨论】:

            • 您好!感谢您的回答:) 我确信这有效....但是,请检查此问题中的其他答案。它将帮助您将来了解 Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK) 之间的区别。
            【解决方案8】:

            将以下代码行放入 gradle.properties 文件中:

            org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
            

            Example image

            【讨论】:

              【解决方案9】:

              我通过这种方式解决了问题:

              【讨论】:

              • 不得不复制到C:\Program Files (x86)\Java\jre1.8.0_211C:\Program Files (x86)\Java\jre1.8.0_251
              【解决方案10】:

              我已经尝试了大多数顶级选项,但我的环境设置似乎有问题,所以它们没有帮助。为我解决问题的是重新安装 jdk1.8.0_201jre1.8.0_201,这为我解决了错误。希望对某人有所帮助。

              【讨论】:

                【解决方案11】:

                在 Centos 7 中,我发现只有 JDK 有 tools.jar,而 JRE 没有。我已经安装了 Java 8 JRE(yum install java-1.8.0-openjdk),但没有安装 JDK(yum install java-1.8.0-openjdk-devel)。

                安装后者可以解决问题。另外,记得设置JAVA_HOME

                【讨论】:

                  【解决方案12】:

                  如果您使用终端构建并且遇到此错误,您可以在 gradle.properties 文件中指向与 android studio 捆绑的 jdk:

                  org.gradle.java.home=/usr/local/android-studio/jre
                  

                  【讨论】:

                    【解决方案13】:

                    在我的系统(Win 10、JRE 1.8.0、Android Studio 3.1.2、Gradle 4.1)上,JRE 目录 (C:\Program Files\Java\jre1.8.0_171) 中没有 tools.jar

                    但是,我在C:\Program Files\Android\Android Studio\jre\lib 找到它并尝试设置JAVA_HOME=C:\Program Files\Android\Android Studio\jre

                    这对我有用!

                    【讨论】:

                    • 同样的问题,为我修复了,Win 10/Android Studio 也是如此。此外,上述解决方案实际上似乎都没有下载“Tools.jar”......只是jre没有附带)
                    • 也为我工作。我在包含org.gradle.java.home=E:\\Android Studio\\jre 的项目根目录中创建了一个 gradle.properties
                    【解决方案14】:

                    在 CentOS7 中,开发包会安装 tools.jar。该文件在 java-1.8.0-openjdk 中不存在

                    sudo yum install java-1.8.0-openjdk-devel

                    【讨论】:

                    • 谢谢理查德!它真的帮助了我!我正在努力运行“react-native run-android”并收到错误:*出了什么问题:任务':app:compileDebugJavaWithJavac'的执行失败。 > 找不到 tools.jar。请检查 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre 是否包含有效的 JDK 安装。现在它正在工作!再次感谢!
                    • 谢谢理查德..它也对我有用。基本上这是一个 JAVA_HOME 路径问题,它试图在所需的 java jdk 路径中找到 tools.jar。
                    • 我正在使用 Amazon Linux AMI,这个解决方案运行良好。
                    【解决方案15】:

                    在 Windows 10 上,我遇到了同样的问题,这就是我解决问题的方法;

                    1. 访问Advance System Settings>Environment Variables>System Variables
                    2. 选择PATH覆盖默认 C:\ProgramData\Oracle\Java\javapath
                    3. 使用您自己的 jdk 安装,即 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_162

                    【讨论】:

                    • 这应该是 Windows 的公认答案 :) --thanks
                    【解决方案16】:

                    我有一个使用 Ubuntu 的类似案例。该机器只安装了 JRE。所以,我只是执行了下面的命令来安装 JDK

                    sudo apt install openjdk-8-jdk

                    【讨论】:

                    • 是的,安装 JDK 而不是 JRE 也解决了我的问题。
                    • 即使我安装了 java 并且我看到了 openjdk 的文件夹,我也遇到了同样的问题。后来我才意识到该文件夹​​只安装了 JRE。不是 JDK。
                    【解决方案17】:

                    这对我有用:

                    我收到消息

                    任务“:app:compileDebugJavaWithJavac”执行失败。

                    找不到 tools.jar。请检查 C:\Program Files\Java\jre1.8.0_121 是否包含有效的 JDK 安装。

                    • 在 Android Studio 中,检查您的 SDK 位置。
                    • 文件、项目结构、SDK 位置、JDK 位置。
                    • 示例:C:\android-studio\android-studio\jre
                    • 将 C:\android-studio\android-studio\jre\lib 文件夹中的 tools.jar 文件复制到 C:\Program Files\Java\jre1.8.0_121\lib 文件夹中。
                    • 重试。

                    【讨论】:

                      【解决方案18】:

                      在“Open Gradle Run Configuration”中通过JAVA_HOME选项卡添加JDK路径即可解决问题。

                      【讨论】:

                        【解决方案19】:

                        将此添加到gradle.properties

                        org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_91

                        【讨论】:

                        • 不要忘记使用双反斜杠。例如:org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
                        【解决方案20】:

                        Linux

                        nanogedit 等任何文本编辑器中打开 /etc/environment 并添加以下行:

                        JAVA_HOME="/usr/lib/jvm/open-jdk"
                        

                        Windows

                        1. 启动系统控制面板小程序(开始 - 设置 - 控制 面板 - 系统)。
                        2. 选择高级选项卡。
                        3. 单击环境 变量按钮。
                        4. 在系统变量下,点击添加按钮,然后通过以下几行:

                          在变量名中:JAVA_HOME

                          在变量值中:C:\Program Files\Java\jdk1.x.x_xxx

                          x.x_xxxjdk 版本,你可以从这里得到你的 jdk 版本C:\Program Files\Java

                        5. 在系统变量下,选择路径,然后单击编辑,然后单击新建按钮,然后通过以下行:

                          %JAVA_HOME%/bin;

                        【讨论】:

                        • 路径可能略有不同。在 Fedora 中,这对我有用 JAVA_HOME="/usr/lib/jvm/java-openjdk"
                        【解决方案21】:

                        在我的情况下(Windows 10)在 Java 更新后我丢失了我的环境变量,所以我修复了再次添加变量,基于以下步骤https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html

                        【讨论】:

                          【解决方案22】:

                          像其他答案一样,我在 gradle.properties 文件中设置了 org.gradle.java.home 属性。但是带有 \ 分隔符的路径不起作用(在 Windows 10 上构建):

                          通过“org.gradle.java.home”提供的 Java 主目录无效。无效的 目录:C:Program FilesJavajdk1.8.0_65

                          所以不是

                          org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_65

                          我不得不使用

                          org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_65

                          那么构建成功

                          问题是该项目是使用 JRE 而不是 JDK 构建的,因为我是从 eclipse 构建它,所以这也有效:

                          • 在 Window>Preferences>Gradle>Arguments 中指定 Workspace JRE 并指定您的 JDK。
                          • 在 Window>Preferences>Java>InstalledJREs 中将您的 JDK 指定为默认值

                          【讨论】:

                            【解决方案23】:

                            我在使用 Eclipse 尝试执行 Gradle 任务时遇到了同样的错误。每次我运行命令(即战争)时,进程都会抛出异常,例如:

                            找不到 tools.jar。请检查 C:\Program Files\Java\Jre8" 是否是有效的 JDK 安装。

                            我尝试了这篇文章中列出的解决方案,但没有一个解决了这个问题。这是我的解决方案:

                            1. 转到“Gradle 任务”视图
                            2. 右键单击要执行的任务
                            3. 选择打开 Gradle 运行配置
                            4. 在“Java Home”选项卡中选择您的本地 JDK 存储库,然后单击“确定”

                            再次奔跑,尽情享受吧!

                            【讨论】:

                            • 经过数小时的搜索,我找到了这个答案,这终于奏效了。非常感谢!
                            • 我找不到 Open Gradle Run 和 Java Home。你能进一步解释一下吗?
                            • 对此不熟悉,如何“转到“Gradle 任务”视图”?我在 View 菜单下没有看到任何 Gradle,也没有看到任何类似的标签?
                            【解决方案24】:

                            我刚刚添加了一个gradle.properties 文件,内容如下:

                            org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
                            

                            【讨论】:

                            • 在linux上也可以编辑~/.gradle/gradle.properties文件,添加org.gradle.java.home=/usr/lib/jvm/java。在 Fedora 24 上为我工作。
                            【解决方案25】:

                            我也在为这个解决方案而苦苦挣扎。如here 所述,使用 Gradle 找到了更好的方法。 我们可以从 Gradle 本身获取 JVM/JDK 信息。

                            dependencies {
                               runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
                            }
                            

                            如此简单。

                            【讨论】:

                            • 如果我使用compile 而不是runtime,这对我有用
                            • 我喜欢这个解决方案。它既美观又便携。
                            • 此解决方案不适用于 Gradle 4.x。我收到了NullPointerException
                            • 当最新的 JDK 没有可用的 tools.jar 时,我可以想象它会返回 null。见github.com/gradle/gradle/blob/master/subprojects/base-services/…
                            【解决方案26】:

                            我在尝试通过 CLI 运行命令时遇到了这个问题。

                            系统查看 JRE 文件夹时出现问题,即 D:\Program Files\Java\jre8\bin。如果我们在那里查看,没有Tools.jar,因此出现了错误。

                            你需要找到JDK在哪里,在我的例子中是:D:\Program Files\Java\jdk1.8.0_11,如果你查看lib目录,你会看到Tools.jar

                            我做了什么我创建了一个新的环境变量JAVA_HOME

                            然后您需要编辑 PATH 变量以包含 JAVA_HOME,即%JAVA_HOME%/bin;

                            重新打开命令提示符并应该运行。

                            【讨论】:

                            • tool.jar 在%JAVA_HOME%\lib; 而不是bin 文件夹中。
                            • 这是否意味着我们应该将%JAVA_HOME%/bin%JAVA_HOME%/lib 添加到Path 变量中?
                            • 尽管 tools.jar 确实在 \lib 中,但在解决方案中只将 \bin 添加到路径对我有用,但不要问为什么。
                            • 通常需要重启/注销才能使更改生效。
                            • 我不得不删除 PATH 条目 C:\ProgramData\Oracle\Java\javapath 并将其替换为 C:\ProgramData\Oracle\Java\jdk1.8.xxx 它默认为姐妹 JRE目录
                            【解决方案27】:

                            可能晚了两年,但我最近遇到了同样的问题,这是我找到this post后最终得到的解决方案:

                            import javax.tools.ToolProvider
                            
                            dependencies {
                              compile (
                                files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
                                ...
                              }
                            }
                            

                            如果 java.home 指向一个不在 JDK 目录下的目录,甚至在 Mac OS 上你应该有 classes.jar 而不是 tools.jar,它应该可以工作。

                            【讨论】:

                            • 无法在空对象上调用 getURLs() 方法
                            【解决方案28】:

                            找到了。 系统属性“java.home”不是 JAVA_HOME 环境变量。 JAVA_HOME 指向 JDK,而 java.home 指向 JRE。请参阅that page 了解更多信息。

                            Soo... 我的问题是我的起点是 jre 文件夹 (C:\jdk1.6.0_26\jre) 而不是我想的 jdk 文件夹 (C:\jdk1.6.0_26) (tools.jar 是在 C:\jdk1.6.0_26\lib 文件夹上)。 dependencies.gradle 中的编译行应该是:

                            compile files("${System.properties['java.home']}/../lib/tools.jar")
                            

                            【讨论】:

                            • 那么,如何用gradle在idea中设置java.home?
                            • 对 mac 用户有什么帮助吗?
                            【解决方案29】:

                            您是否确保 tools.jar 在编译类路径中出现?可能路径不正确。

                            task debug << {
                                configurations.compile.each { println it }
                            }
                            

                            【讨论】:

                            • 是的,它确实进入了类路径,但仍然遇到问题。
                            猜你喜欢
                            • 2015-11-06
                            • 2020-03-15
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2018-01-09
                            • 1970-01-01
                            相关资源
                            最近更新 更多