Gradle找不到tools.jar

时间:2012-07-05 13:19:35

标签: java gradle groovy build

我正在使用带有gradle的javadoc doclet,所以我需要使用package 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")

但在编译时却找不到它。

28 个答案:

答案 0 :(得分:122)

当我尝试通过CLI运行命令时遇到此问题。

系统查看JRE文件夹时出现问题,即 D:\Program Files\Java\jre8\bin。如果我们查看那里,就没有Tools.jar,因此错误。

您需要找到JDK的位置,在我的情况下:D:\Program Files\Java\jdk1.8.0_11,如果您查看lib目录,则会看到Tools.jar

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

然后你需要编辑你的PATH变量以包含JAVA_HOME,即%JAVA_HOME%/bin; enter image description here

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

答案 1 :(得分:72)

找到它。 系统属性'java.home'不是JAVA_HOME环境变量。 JAVA_HOME指向JDK,而java.home指向JRE。有关详细信息,请参阅that page

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")

答案 2 :(得分:66)

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

  

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

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

  1. 转到" Gradle Task"查看
  2. 右键单击要执行的任务
  3. 选择“打开Gradle运行配置”
  4. 在标签" Java Home"选择本地JDK存储库,然后单击“确定”
  5. 再次跑步,享受!

答案 3 :(得分:41)

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

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

答案 4 :(得分:21)

我使用 Ubuntu 进行了类似的案例。机器只安装了 JRE 。所以,我刚刚执行了以下命令来安装 JDK

sudo apt install openjdk-8-jdk

答案 5 :(得分:17)

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

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

这么简单。

答案 6 :(得分:15)

将此添加到gradle.properties

  

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

答案 7 :(得分:12)

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

sudo yum install java-1.8.0-openjdk-devel

答案 8 :(得分:11)

可能两年太晚了,但我最近遇到了同样的问题,这是我找到this post后得到的解决方案:

import javax.tools.ToolProvider

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

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

答案 9 :(得分:8)

在Windows 10上,我遇到了同样的问题,这是我如何修复问题的;

  1. 访问Advance System Settings>Environment Variables>System Variables
  2. 选择路径覆盖默认值     C:\ProgramData\Oracle\Java\javapath
  3. 使用您自己的jdk安装 JAVA_HOME = C:\Program Files\Java\jdk1.8.0_162

答案 10 :(得分:4)

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

但是,我在C:\Program Files\Android\Android Studio\jre\lib找到了它,并尝试设置 JAVA_HOME=C:\Program Files\Android\Android Studio\jre

这对我有效!

答案 11 :(得分:3)

<强>的Linux

nano gedit 等任何文本编辑器中打开/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. 在系统变量下,选择路径,然后单击编辑,然后单击新按钮,然后单击以下行:

    %JAVA_HOME%/bin;

答案 12 :(得分:3)

在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

答案 13 :(得分:2)

与其他答案一样,我在 gradle.properties 文件中设置 org.gradle.java.home 属性。但是\ _分隔符的路径不起作用(在Windows 10上构建):

  

通过&#org.gradle.java.home提供的Java主页&#39;是无效的。无效   目录: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构建的,所以这也很有效:

  • 在窗口&gt;首选项&gt; Gradle&gt;参数中指定工作区JRE并指定您的JDK。
  • 在窗口&gt;首选项&gt; Java&gt; InstalledJREs中将JDK指定为默认值

答案 14 :(得分:2)

在我的情况下(Windows 10),Java更新后我丢失了环境变量,因此我根据以下步骤https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html

重新添加了变量

答案 15 :(得分:2)

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

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

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

答案 16 :(得分:2)

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

答案 17 :(得分:1)

通过“打开Gradle运行配置”中的JAVA_HOME选项卡添加JDK路径将解决问题。

答案 18 :(得分:1)

这对我有用:

我收到了消息

  

任务执行失败&#39;:app:compileDebugJavaWithJavac&#39;。

     
    

无法找到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文件夹中。
  • 重试。

答案 19 :(得分:1)

您是否确保tools.jar在编译类路径上创建了它?也许路径不正确。

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

答案 20 :(得分:1)

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

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

答案 21 :(得分:1)

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

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

Example image

答案 22 :(得分:1)

为我解决的问题如下:

  1. 在C:\ Program Files \ Android \ Android Studio \ jre \ lib中找到tools.jar
  2. 将粘贴复制到C:\ Program Files(x86)\ Java \ jre1.8.0_271 \ lib
  3. 再次运行该代码,即可正常工作。

答案 23 :(得分:0)

我的 Android Studio 版本:4.2.1

“tools.jar” 由 android studio 编译所需的 Oracle JDK 提供 - 我在我的 PC 上将 android studio 更新到最新版本后遇到了这个问题。

要解决此问题,请按照以下步骤操作:

  1. 在Android studio File -> Project Structure -> SDKs(在平台设置下)

    A) 如果中间窗格中不存在 JDK/JDK 主路径(中间窗格还包含已下载的 Android SDK),则通过在中间窗格中按“+”符号添加 JDK 路径

    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) 进入 Advanced -> Environment Variables 在系统变量下添加 JAVA_HOME 和 JRE_HOME 如下

Set Windows system environment variable

  1. 在用户变量下的Path环境变量上添加jdk lib路径(只有在前面的步骤没有解决错误时才需要这一步) C:\Program Files\Java\jdk1.X.Y_ABC\lib

答案 24 :(得分:0)

找不到 tools.jar

MacOS

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

并重启 Shell

答案 25 :(得分:0)

对我来说这个错误是在尝试使用 audioplayers flutter 库后发生的。 为了解决我得到了文件夹的tools.jar:

<块引用>

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

并粘贴

<块引用>

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

此后构建工作正常。

答案 26 :(得分:0)

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

答案 27 :(得分:0)

我尝试了大多数顶级选项,但似乎我的环境设置有问题,因此它们无济于事。为我解决了这个问题的是重新安装 jdk1.8.0_201jre1.8.0_201,这为我解决了错误。希望能对某人有所帮助。