Gradle无法找到tools.jar

196

我正在使用gradle与javadoc doclets,因此我需要使用位于jdk的lib文件夹中的tools.jar包。

问题在于gradle不会自动引入它,所以我将该tools包添加到我的libs文件夹中,并将其添加到dependencies.gradle文件中。

现在我想直接从我的JDK主目录中获取它并引入到dependencies.gradle中。有什么方法可以实现吗? 我已经在我的dependencies.gradle文件中尝试了以下内容:

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

但是编译时它找不到它。


3
值得一提的是,在解决这个问题之前,就像我在遇到它时所做的那样,您需要确保已安装JDK。并且在某些系统上,您需要安装devel JDK软件包才能获取tools.jar工具。 - mrooney
31个回答

12

在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


11

也许晚了两年,但最近我遇到了同样的问题,找到了这篇文章后,我想到了这个解决方案:

import javax.tools.ToolProvider

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

如果java.home指向JDK目录之外的目录,甚至在Mac OS上使用classes.jar而不是tools.jar也应该能够工作。


无法在空对象上调用getURLs()方法。 - Ulterior

10

在Windows 10上,我遇到了相同的问题,以下是我解决这个问题的方法:

  1. 访问 高级系统设置>环境变量>系统变量
  2. 选择路径(PATH)覆盖默认 C:\ProgramData\Oracle\Java\javapath
  3. 使用您自己的JDK安装,即JAVA_HOME=C:\Program Files\Java\jdk1.8.0_162

这应该是Windows的最佳答案 :) --谢谢 - Saher Ahwal

9
在我的系统上(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一起提供。 - Erik Aronesty
我也试过了,我在项目根目录下创建了一个gradle.properties文件,其中包含org.gradle.java.home=E:\\Android Studio\\jre - br4nnigan

5
我解决这个问题的方法如下:
  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)之间的区别,从而在未来更好地理解它们。 - raspayu
它对我有用!所以这个评论也帮助我解决了我的问题。谢谢兄弟! - Jesus Erwin Suarez

4

如果你在使用终端进行构建时遇到此错误,可以在gradle.properties文件中指向与Android Studio捆绑的JDK:

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

3

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_xxx 是jdk版本,您可以从这里获取jdk版本 C:\Program Files\Java

  5. 在系统变量下,选择Path,然后点击编辑,再点击新建按钮,然后粘贴以下行:

    %JAVA_HOME%/bin;


路径可能略有不同。在 Fedora 中,我使用 JAVA_HOME="/usr/lib/jvm/java-openjdk" 成功运行了它。 - rvf

3
这对我很有用:
我遇到了以下信息:
执行任务':app:compileDebugJavaWithJavac'失败。
找不到tools.jar。请确保 C:\Program Files\Java\jre1.8.0_121 中包含有效的JDK安装。
以下是解决方法:
1.在Android Studio中,检查您的SDK位置。
2.通过选择"文件" -> "项目结构" -> "SDK位置" -> "JDK位置"进行设置。
3.例如:C:\android-studio\android-studio\jre 4.将C:\android-studio\android-studio\jre\lib文件夹中的tools.jar文件复制到C:\Program Files\Java\jre1.8.0_121\lib文件夹中。
5.重试。

2

2
我用以下方法解决了这个问题: "最初的回答":I solved problem on this way.

不得不将其复制到 C:\Program Files (x86)\Java\jre1.8.0_211C:\Program Files (x86)\Java\jre1.8.0_251 - TessavWalstijn

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