Gradle 没有找到 tools.jar

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

关键是 gradle 不会自动接受它,所以我将工具包添加到我的 libs 文件夹,然后将它添加到 depencies.gradle。

现在我想将它直接从 JDK 家中转移到 Dependences.gradle 中。有办法吗?我已经试过下一个了:

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

但是它在编译时没有找到它。

364335 次浏览

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

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

找到了。 系统属性“ JAVA.home”不是 JAVA _ HOME 环境变量。 JAVA _ HOME 指向 JDK,而 JAVA.home 指向 JRE。

所以... ... 我的问题是,我的起始点是 jre 文件夹(C: jdk1.6.0 _ 26 jre) ,而不是我想的 jdk 文件夹(C: jdk1.6.0 _ 26)(tools.jar 在 C: jdk1.6.0 _ 26 lib 文件夹中)。Gradle 中的编译行应该是:

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

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

import javax.tools.ToolProvider


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

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

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

系统查看 JRE 文件夹时出现了一个问题,即。 如果我们看这里,没有 Tools.jar,因此出现了错误

您需要找到 JDK的位置,在我的示例中是 D:\Program Files\Java\jdk1.8.0_11,如果您查看 lib目录,您将看到 Tools.jar

我做了什么? 我创建了一个新的环境变量: enter image description here

然后您需要编辑 PATH 变量以包含 JAVA _ HOME,即 %JAVA_HOME%/bin; enter image description here

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

我也在为这个解决方案而努力,找到了一个更好的方法,就像 给你描述的那样。 我们可以从 Gradle 本身获得 JVM/JDK 信息。

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

这么简单。

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

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

把这个加到 gradle.properties:

Home = C: Program Files Java jdk1.8.0 _ 91

我在使用 Eclipse 尝试执行 Gradle Task 时也出现了同样的错误。每次我运行一个命令(比如 war) ,进程都会抛出一个异常,比如:

找不到 tools.jar。请检查 C: Program Files JavaJre8”是否是有效的 JDK 安装。

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

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

再跑一次,好好享受!

与其他答案一样,我在 Gradle 房地产公司文件中设置了 Org.gradle.java.home属性。但使用分隔符的路径不起作用(建立在 windows 10上) :

通过‘ org.gradle.Java.home’提供的 Java home 无效。无效 目录: C: Program FilesJavajdk1.8.0 _ 65

所以

Home = C: Program Files Java jdk1.8.0 _ 65

我不得不用

Home = C:/Program Files/Java/jdk1.8.0 _ 65

那么建造是成功的

问题是,这个项目是用 JRE 而不是 JDK 构建的,而且因为我是从 eclipse 构建的,所以这个方法也是可行的:

  • 在窗口 > 首选项 > 等级 > 参数指定工作区 JRE 并指定您的 JDK。
  • 在 Window > Preferences > Java > InstalledJRE 中,将 JDK 指定为默认值

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

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

sudo apt install openjdk-8-jdk

Linux

在任何文本编辑器(如 纳米机器人Gedit)中打开 /etc/environment,并添加以下代码行:

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

窗户

    < li > 启动系统控制面板(启动-设置-控制 面板-系统)
  1. 选择 Advanced 选项卡。
  2. < li > 按环境 变量按钮
  3. 在“系统变量”下,单击“添加”按钮,然后跳过以下行:

    变量名称: JAVA_HOME

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

    在哪里你可以得到你的版本从这里 x.x_xxx jdk 版本

  4. 在“系统变量”下,选择“路径”,然后单击“编辑”,再单击“新建”按钮,然后越过以下行:

    %JAVA_HOME%/bin;

通过“打开级别运行配置”中的 JAVA _ HOME 选项卡添加 JDK 路径可以解决这个问题。

这对我很有效:

我收到了信息

执行失败的任务: 应用程序: 编译 DebugJavaWithJavac’。

找不到 tools.jar。请检查 C: Program Files Javajre1.8.0 _ 121是否包含有效的 JDK 安装。

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

在 Windows 10上,我遇到了同样的问题,这也是我如何解决的问题;

    < li > Access < code > 高级系统设定 > 环境变量 > 系统 变量 < li > 选择 路径覆盖默认值 C:\ProgramData\Oracle\Java\javapath
  1. 使用您自己的 jdk 安装,即 JAVA _ Home = C:\Program Files\Java\jdk1.8.0_162

在 CentOS7中,开发包将安装 tools.jar

sudo yum install java-1.8.0-openjdk-devel

在我的系统(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

那(对我)有用!

如果你使用终端编译,你有这个错误,你可以指向 jdk 捆绑 android 工作室在你的 gradle.properties文件:

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

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

安装后者可以解决这个问题。

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

我用这种方法解决了问题:

在 gradle.properties 文件中输入以下代码行:

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

例子图片

对我来说,解决这个问题的办法如下:

  1. 在 C: Program Files Android Studio jre lib 中找到 tools.jar
  2. 复制粘贴到 C: Program Files (x86) Java jre1.8.0 _ 271 lib
  3. 再次运行代码,成功了。

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

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

C: Program Files Android Studio jre lib 程序文件

然后粘上去

C: Program Files Java jre1.8.0 _ 181 lib.

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

找不到 tools.jar

MacOS

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

重启 Shell

在 macOS 大苏尔

这个问题的发生是因为在 macOS Big Sur 中没有正确设置环境变量 JAVA_HOME

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

echo $JAVA_HOME

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

/usr/libexec/java_home -V

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

步骤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

我的 Android 工作室版本: 4.2.1

“ tools.jar”是由 Oracle JDK 提供的,它是 android 工作室编译所必需的——在我的电脑上升级 android 工作室到最新版本后,我遇到了这个问题。

要解决这一问题,需要采取以下步骤:

  1. < p > 在 Android 工作室文件中-> 项目结构-> SDK (在平台设置下)

    A)如果假设 JDK/JDK 主路径没有出现在中间窗格中(中间窗格还包含下载的 Android SDK) ,那么通过在中间窗格中按’+’符号来添加 JDK 路径

    B) Java sdk 通常会出现/安装在路径64 bit = > “ C: Program Files Java jdk1.X.Y _ ABC”(在我的 PC 中是1.8.0 _ 202)或32 bit = > “ 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)转到 Advanced-> Environment Variables 在系统变量下添加 JAVA _ HOME 和 JRE _ HOME,如下所示

设置 Windows 系统环境变量

    < li > 在路径环境变量的用户变量下添加 jdk lib 路径(只有在前面的步骤没有解决错误时,才需要执行此步骤) C: Program Files Java jdk1.X.Y _ ABC lib
对于 Windows,将 JDK 主路径添加到 Gradle 属性文件 org.Gradle.java.home。 如果没有 gradle.properties 文件,那么创建一个新文件并添加

例如: org.gradle.Java.home = C: Program Files Java jdk1.8.0 _ 241

把这个用在现代版本的 gradle 上:

def compiler = javaToolchains.compilerFor { languageVersion = JavaLanguageVersion.of(java.sourceCompatibility.majorVersion) }.get()
implementation compiler.metadata.installationPath.files('lib/tools.jar')