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")
但在编译时找不到它。
当我尝试通过CLI运行命令时遇到了这个问题。
这是系统查看JRE文件夹的问题,例如D:\Program Files\Java\jre8\bin
。 如果我们看看那里,没有Tools.jar
,所以错误。
在我的情况下,您需要findJDK
位置: D:\Program Files\Java\jdk1.8.0_11
,如果您在lib
目录中查看,您将看到Tools.jar
。
我做了什么,我创build了一个新的环境variablesJAVA_HOME
:
然后你需要编辑你的PATHvariables来包含JAVA_HOME,即%JAVA_HOME%/bin;
重新打开命令提示符,并应运行。
find了。 系统属性“java.home”不是JAVA_HOME环境variables。 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任务时遇到了同样的错误。 每次我运行一个命令(即战争)的过程中抛出一个exception,如:
找不到tools.jar。 请检查C:\ Program Files \ Java \ Jre8“是否为有效的JDK安装。
我尝试了这篇文章中列出的解决scheme,但没有一个解决了这个问题。 这里我的解决scheme
- 转到“Gradle Task”视图
- 右键单击您要执行的任务
- select打开Gradle运行configuration
- 在“Java Home”选项卡中select您的本地JDK存储库,然后单击确定
再次运行,享受!
我刚刚添加了一个gradle.properties
文件,其中包含以下内容:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
我为这个解决scheme也苦苦挣扎。 按照此处所述,使用Gradlefind更好的方法。 我们可以从Gradle本身获取JVM / JDK信息。
dependencies { runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar) }
很简单。
可能两年已经太晚了,但是最近我遇到了同样的问题,这是我find这个post后最终find的解决scheme:
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在编译类path上做了吗? 也许path是不正确的。
task debug << { configurations.compile.each { println it } }
像其他答案一样,我在gradle.properties文件中设置了org.gradle.java.home属性。 但是\分隔符path不起作用(build立在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
那么构build就成功了
问题是项目是使用JRE而不是JDK构build的,因为我是从eclipse构build的,所以这也起作用了:
- 在Window> Preferences> Gradle> Arguments中指定Workspace JRE并指定您的JDK。
- 在“窗口”>“首选项”>“Java”>“InstalledJRE”中,将JDK指定为默认值
在我的情况下(Windows 10)Java更新后,我失去了我的环境variables,所以我固定再次添加variables,基于以下步骤https://confluence.atlassian.com/doc/setting-the-java_home-variable-in -Windows-8895.html
Linux的
在任何文本编辑器(如nano或gedit)中打开/etc/environment
并添加以下行:
JAVA_HOME="/usr/lib/jvm/open-jdk"
视窗
- 启动系统控制面板小程序(开始 – 设置 – 控制面板 – 系统)。
- select高级选项卡。
- 点击环境variablesbutton。
-
在系统variables下,单击添加button,然后通过以下几行:
在variables名称:
JAVA_HOME
在variables值中:
C:\Program Files\Java\jdk1.x.x_xxx
其中
x.x_xxx
jdk版本可以从这里得到你的jdk版本C:\Program Files\Java
-
在系统variables下,selectpath,然后单击编辑,然后单击新buildbutton,然后通过以下行:
%JAVA_HOME%/bin;