【问题标题】:Eclipse Gradle build "Could not find tools.jar"Eclipse Gradle 构建“找不到 tools.jar”
【发布时间】:2016-06-07 02:41:40
【问题描述】:

我已经搜索了一整天,并尝试了几乎所有建议的解决方案,没有一个适用于我的 Eclipse,完全不知道出了什么问题,当我尝试通过构建时它一直说“找不到 tools.jar”摇篮。

我做了什么:

1)在系统环境变量中添加Java Home(指向我的JDK)。

2)在Path系统环境变量中添加路径(包含tools.jar)。

3) 在项目文件夹中创建dependencies.gradle 文件,指示Gradle 查找tools.jar (compile files("${System.properties['java.home']}/../lib/tools.jar"))

4) 直接把compile files("${System.properties['java.home']}/../lib/tools.jar")放在build.gradle dependencies里面。

5) 在项目首选项中,转到Java -> Build Path -> Classpath 变量,添加JAVA_HOME 变量。

6) 将项目构建路径指向 JDK 而不是 JRE。

这些都不起作用!我还能尝试什么?

PS:Eclipse 版本 Mars 4.5.2,Gradle 版本 1.12

build.gradle 内容(这个构建脚本是eclipse自动生成的):

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.5
version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

test {
    systemProperties 'property': 'value'
}

uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}

Java 主页内容:

路径环境变量:

C:\Program Files\Java\jdk1.7.0_67\lib

在 Eclipse 控制台中显示错误:

:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Could not find tools.jar

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 0.152 secs
[sts] Build failed
org.gradle.tooling.BuildException: Could not execute build using Gradle 
installation 'C:\buildtools\gradle-2.12'.
Caused by: java.lang.IllegalStateException: Could not find tools.jar

(stacktrace 太长,我缩短了。)

【问题讨论】:

  • 更新这个显示你安装 JDK 的确切位置,以及 JAVA_HOME 的设置。删除“tools.jar”的依赖项。你不需要那个。显示您的整个构建脚本和构建结果。
  • @DavidM.Karr 感谢您的建议,我已经更新了问题,
  • 路径必须到 bin,而不是 lib。
  • @DavidM.Karr 我已经尝试过了,仍然是同样的错误。无论如何,tools.jarlib 文件夹中,而不是在bin 文件夹中。

标签: java eclipse gradle build


【解决方案1】:

好的,我的问题终于解决了。很简单,我重新安装了JDK。不知何故,愚蠢的 Eclipse(或 Gradle 插件,我仍然不确定哪个出了问题)无法识别我的旧 JDK 路径。

我重新安装了JDK后(借这个机会,我也将JDK 7升级到8),我什至不需要Java_home环境变量,它可以工作。

【讨论】:

  • 劫持解决方案可能是解决方案而无需重新安装 - 我在过去的工作日与您处于相同的情况。使用您找到的所有路径变量和 eclipse 设置,它很简单,在网上很难找到:在 eclipse.ini 中,指定了 jre 的路径。我把它改成了我的 jdk,它就可以工作了。
  • 我强烈怀疑窗口注册表有问题,这就是重新安装解决问题的原因。
【解决方案2】:

我遇到了同样的问题。我相信这是由 gradle 配置为使用的 JRE 而不是 eclipse/STS JRE 引起的。在我的机器上,gradle 默认使用了错误的 JRE。安装 gradle 后(甚至通过 buildship),它会在 Windows 上的主目录(C:/Users/username)中放置一个 .gradle 目录。您可以在 .gradle 中创建一个 gradle.properties 文件,并指定您希望 gradle 使用的 JRE/JDK,如下例所示:

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

这可能会通过使用 robyjwilkins 推荐的命令行方法来揭示。它应该避免需要重新安装 JDK。

欲了解更多信息,请参阅https://docs.gradle.org/current/userguide/build_environment.html

【讨论】:

    【解决方案3】:

    第一步:打开eclipse

    第 2 步:打开 窗口 -> 首选项

    第 3 步:转到 Gradle (STS) -> 参数

    第 4 步:为 Java Home 选项选择合适的 JDK 版本。 (见下图)

    【讨论】:

    • 嗯..你用的是什么版本?我的 Eclipse 的 Gradle 菜单没有 Arguments 子菜单。我正在使用 Photon Release (4.8.0) Build id: 20180619-1200
    【解决方案4】:

    我建议在尝试使用 eclipse gradle 构建之前让您的构建从命令行运行。看起来你的类路径有问题,但不清楚到底是什么问题。最初从混合中删除 eclipse 并在没有 eclipse 的情况下使构建工作会很有帮助。在命令行 cd 到 build.gradle 脚本所在的文件夹并运行

    > gradle clean build
    

    > ./gradlew clean build
    

    如果一切正常,但 Eclipse 构建仍然失败,那么您就会知道问题出在 Eclipse 配置中的某个地方。如果从命令行使用 gradle 构建项目不起作用,那么您的项目或 gradle 设置存在潜在问题。有大量可用的文档将解释如何从命令行使用 gradle 构建项目。

    【讨论】:

    • 您好,谢谢您的建议,我通过命令行尝试,我可以成功构建它。我可以使用我的 Eclipse 来发出 clean 任务,但不能使用 build 任务。还是不知道为什么...
    • 您的 Eclipse 设置似乎有问题。你用的是什么 Gradle 插件?你检查过这个属性吗?检查它使用与从命令行运行时使用的相同版本的 gradle。我有 Gradle STS,但不倾向于从 Eclipse 中运行 gradle 构建。
    • 我的PC上只安装了一个gradle版本,对于eclipse gradle插件,它是Gradle STS 3.7.3。 eclipse 中的配置已指示插件查找安装在我的 PC 中的 Gradle 可执行文件。
    【解决方案5】:

    我的回答是我需要使用 JDK 捆绑的 JRE 而不是独立系统 JRE 来运行 Eclipse。

    修改 eclipse.ini 以更改 vm eclipse(.exe) 查找。即:

    -vm
    C:\Program Files\Java\jdk1.8.0_92\jre\bin\java.exe
    

    【讨论】:

      【解决方案6】:

      在我的 OP 解决方案也不起作用的情况下,答案是

      1. 在 Eclipse/Gradle Tasks 插件窗口中右击 gradle 任务

      2. 打开选项卡“Java 主页”

      3. 将 Java 主目录设置为 C:\Program Files\Java\jdk1.8.0_131\jre

        目录可能因 jdk 版本而异

      【讨论】:

        【解决方案7】:

        这是一个常见问题,它总是发生,因为 Eclipse 已将 JAVA_HOME 或 JDK_HOME 配置到没有 tools.jar 的 JRE 位置,因此出现了问题。对于这种特殊情况:Eclipse 通常使用 Gradle(STS) 或 Buildship 插件进行 gradle 构建,因为这些插件使用 eclipse 提供的设置,因此您的构建失败。

        现在考虑上述事实。有几种可行的解决方案:

        1. 如果您仍想使用嵌入式 gradle,请修改 eclipse.ini 文件以提供 JDK 位置,我猜该插件可能会使用该位置,您的问题可能会得到解决。或者您甚至可以尝试为 JDK 位置配置 STS 插件
        2. 如果您转到 Window> Preferences>Gradle 并将其配置为使用外部 Gradle 安装,那么您可以在您的 USER 位置提供一个 gradle.properties 文件(sol. by @Andy Sinclair)

        在类似的注释中,即使对于基于 Eclipse 的常规 Java 项目,您也可能会遇到此问题。再次解决方案是相同的。

        【讨论】:

          【解决方案8】:

          我在安装最近的 java 更新后遇到了这个“tools.jar can't be found”问题。

          似乎 Oracle 没有将 tools.jar 与 JRE 捆绑在一起。

          要解决 - 我将 tools.jar 从以前的版本复制到当前 JRE 的 java/jren_nn/lib 文件夹中。 然后我重新启动了eclipse

          【讨论】:

            【解决方案9】:

            我正在使用 Eclipse 2019-09,我只是通过强制 Eclipse 不使用 Gradle 包装器来解决这个问题:“windows > 首选项 > Gradle”。

            在“本地安装目录”字段中,然后指向“your_gradle_folder/bin”

            Gradle 首选项菜单与 Eclipse 版本不同,我猜想阅读 anij 答案。

            【讨论】: