Gradle没有findtools.jar

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

关键是Gradle不会自动把它join,所以我把这个工具包添加到我的libs文件夹,然后把它添加到dependencies.gradle。

现在,我想直接从我的JDK家里进入我的dependencies.gradle。 有没有办法做到这一点? 我在我的dependencies.gradle中尝试了下一个:

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

但在编译时找不到它。

Solutions Collecting From Web of "Gradle没有findtools.jar"

当我尝试通过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; 在这里输入图像说明

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

找到了。 系统属性“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") 

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

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

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

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

再次运行,享受!

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

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

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

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

很简单。

可能两年已经太晚了,但是最近我遇到了同样的问题,这是我找到这个帖子后最终找到的解决方案:

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

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

添加到gradle.properties

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

我有一个类似的情况,但使用Ubuntu 。 机器只安装了openjdk-8-jre 。 所以我只是执行了下面的命令让所有的东西都重新运行。

sudo apt install openjdk-8-jdk

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

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

像其他答案一样,我在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。
  • 在“窗口”>“首选项”>“Java”>“InstalledJRE”中,将JDK指定为默认值

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

Linux的

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

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

视窗

  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;