188

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

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

现在我想直接把它从我的 JDK home 带到我的 dependencies.gradle 中。有没有办法做到这一点?我在 dependencies.gradle 中尝试了下一个:

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

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

4

29 回答 29

161

当我尝试通过 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; 在此处输入图像描述

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

于 2016-02-25T09:25:47.597 回答
80

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

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")
于 2012-07-05T13:47:52.260 回答
75

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

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

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

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

再次奔跑,享受!

于 2016-08-19T13:21:28.763 回答
58

我刚刚添加了一个gradle.properties包含以下内容的文件:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
于 2016-06-29T12:30:33.283 回答
42

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

sudo apt install openjdk-8-jdk

于 2017-07-27T15:47:25.877 回答
25

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

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

很简单。

于 2016-03-11T11:44:32.673 回答
25

在 macOS 大苏尔

出现此问题的原因JAVA_HOME是 macOS Big Sur 中未正确设置环境变量。

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

echo $JAVA_HOME

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

/usr/libexec/java_home -V

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

第 3 步 -.zshenv使用编辑nano

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
于 2021-05-20T10:42:38.360 回答
21

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

sudo yum install java-1.8.0-openjdk-devel

于 2018-03-19T21:19:41.423 回答
19

将此添加到gradle.properties

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

于 2016-08-08T09:25:33.363 回答
12

我在 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 无法正常工作的原因。

于 2020-12-08T06:17:25.727 回答
11

可能为时已晚两年,但我最近遇到了同样的问题,这是我在找到这篇文章后最终得到的解决方案:

import javax.tools.ToolProvider

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

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

于 2015-03-02T08:31:58.350 回答
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.

于 2018-08-16T14:46:55.083 回答
10

在 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
于 2018-02-13T17:56:25.990 回答
9

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

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

这对我行得通)!

于 2018-05-22T10:04:21.620 回答
5

为我解决了以下问题:

  1. 在 C:\Program Files\Android\Android Studio\jre\lib 中找到 tools.jar
  2. 复制粘贴到 C:\Program Files (x86)\Java\jre1.8.0_271\lib
  3. 再次运行代码,它工作。
于 2020-11-02T11:36:25.337 回答
4

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

org.gradle.java.home=/usr/local/android-studio/jre
于 2018-06-21T12:21:01.993 回答
3

Linux

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

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

视窗

  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;

于 2017-11-13T11:35:35.563 回答
3

这对我有用:

我收到消息

任务 ':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 文件夹中。
  • 重试。
于 2018-01-07T02:26:34.130 回答
3

我以这种方式解决了问题:

于 2019-03-13T17:17:22.907 回答
2

像其他答案一样,我在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 作为默认值
于 2016-09-10T04:48:54.567 回答
2

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

于 2017-04-25T14:19:51.510 回答
2

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

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

示例图片

于 2020-10-17T09:50:26.113 回答
1

你确定 tools.jar 在编译类路径上吗?也许路径不正确。

task debug << {
    configurations.compile.each { println it }
}
于 2012-07-05T13:34:12.090 回答
1

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

于 2017-12-18T03:35:17.207 回答
0

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

于 2019-02-22T18:17:42.727 回答
0

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

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

并粘贴在

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

在此之后,构建工作正常。

于 2021-01-17T13:28:31.647 回答
0

找不到 tools.jar

苹果系统

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

并重启壳牌

于 2021-04-16T10:23:09.487 回答
0

我的 Android Studio 版本:4.2.1

tools.jar”由 android studio 编译所需的 Oracle JDK 提供 - 在我的 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 如下

设置 Windows 系统环境变量

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

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

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

于 2021-08-15T13:25:51.353 回答