Eclipse Gradle构建“Could not find tools.jar”

14

我已经谷歌搜索了一整天,尝试了几乎所有建议的解决方案,但没有任何一个适用于我的Eclipse,完全不知道出了什么问题,当我尝试通过Gradle进行构建时,它一直报错“找不到tools.jar”。

我做了以下尝试:

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

2)将包含tools.jar的路径添加到“Path”系统环境变量中。

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 Home内容:

输入图像描述

路径环境变量:

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

(堆栈跟踪太长,我将其缩短。)


更新此内容,准确显示您安装JDK的位置以及JAVA_HOME设置。删除“tools.jar”的依赖项。您不需要它。显示您的整个构建脚本和构建结果。 - David M. Karr
@DavidM.Karr 谢谢您的建议,我已经更新了问题。 - Sam YC
路径必须指向bin,而不是lib。 - David M. Karr
@DavidM.Karr 我尝试了一下,仍然是同样的错误。无论如何,tools.jarlib文件夹中,并不在bin文件夹中。 - Sam YC
9个回答

7

好的,最终我解决了我的问题。方法很简单,我重新安装了JDK。不知怎么回事,愚蠢的Eclipse(或Gradle插件,我仍然不确定哪一个出了问题)就是不能识别我的旧JDK路径。

在我重新安装JDK后(趁机将JDK 7升级到8),我甚至不需要Java_home环境变量,它就可以工作。


2
劫持解决方案,可能本来可以不用重新安装就能解决——我在上个工作日和你处于同样的情况。在所有关于路径变量和eclipse设置的信息中,要找到一个简单的解决方法却很难在线上找到:在eclipse.ini文件中,指定了一个jre的路径。我将其更改为我的jdk,问题就解决了。 - Jochen Birkle
我强烈怀疑窗口注册表出了问题,这就是为什么重新安装解决了问题的原因。 - Sam YC

5

我曾经遇到了同样的问题,我认为这是因为gradle配置使用的JRE不正确而不是eclipse/STS JRE所导致的。在我的电脑上,gradle默认使用了错误的JRE。当安装gradle时(即使通过buildship),它会在您的主目录(C:/Users/用户名)下放置一个.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


4

步骤1:打开eclipse

步骤2:点击Window -> Preferences

步骤3:进入Gradle (STS) -> Arguments

步骤4:为Java Home选项选择适当的JDK版本。(参见下面的图像)

enter image description here


1
嗯..你用的是哪个版本?我的Eclipse的Gradle菜单没有“Arguments”子菜单。我正在使用Photon Release(4.8.0)Build id: 20180619-1200。 - leeyuiwah

2

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

修改eclipse.ini以更改Eclipse(.exe)发现的VM,即:

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

2

在尝试使用eclipse gradle构建之前,我建议您先从命令行运行构建。看起来您的类路径存在问题,但具体问题不清楚。最好先将eclipse从混合中删除,并在没有eclipse的情况下使构建工作正常。在命令行中,cd到存储build.gradle脚本的文件夹并运行。

> gradle clean build

或者

> ./gradlew clean build

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

嗨,谢谢你的建议,我尝试通过命令行构建,成功了。我可以使用我的 Eclipse 发出 clean 任务,但无法发出 build 任务。仍然不知道原因… - Sam YC
看起来是你的Eclipse设置出了问题。你使用的Gradle插件是什么?你检查过它的属性了吗?请确保它使用的是与你在命令行中运行时使用的相同版本的gradle。我有Gradle STS,但不倾向于从Eclipse内部运行gradle构建。 - robjwilkins
我PC上只安装了一个gradle版本,对于eclipse gradle插件,它是Gradle STS 3.7.3。Eclipse中的配置已指向插件寻找在我PC上安装的Gradle可执行文件。 - Sam YC

2
这是一个常见的问题,通常发生在eclipse配置了JAVA_HOME或JDK_HOME到没有tools.jar的JRE位置,因此出现了这个问题。对于这种情况,Eclipse通常使用Gradle(STS)或Buildship插件进行gradle构建,由于这些插件使用eclipse提供的设置,因此您的构建失败了。
考虑到以上事实,有几个解决方案可以解决问题:
1. 如果您仍然想使用嵌入式gradle,则可以修改eclipse.ini文件以提供JDK位置,我猜插件可能会使用它,您的问题可能会得到解决。或者,您甚至可以尝试配置STS插件以获取JDK位置。 2. 如果您进入Window> Preferences> Gradle并将其配置为使用外部Gradle安装,则可以在USER位置提供gradle.properties文件(sol. by @Andy Sinclair)。
同样,对于基于普通Eclipse的Java项目,您甚至可能遇到此问题。解决方案也是一样的。

2

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

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

  2. 打开“Java Home”选项卡

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

    目录可能因jdk版本而异


1
我在安装最近的Java更新后遇到了“找不到tools.jar”的问题。
看起来Oracle没有将tools.jar捆绑在JRE中。
解决方法是 - 我将tools.jar从先前版本复制到当前JRE的java/jren_nn/lib文件夹中。然后我重新启动了eclipse。

0

我正在使用 Eclipse 2019-09,并通过在 "windows > preferences > Gradle" 中强制 Eclipse 不使用 Gradle 包装器来解决了这个问题。

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

根据 anij 的回答,Gradle 首选项菜单因 Eclipse 版本而异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接