Gradle 没有找到 tools.jar
Posted
技术标签:
【中文标题】Gradle 没有找到 tools.jar【英文标题】:Gradle does not find tools.jar 【发布时间】:2012-07-05 21:48:12 【问题描述】:我正在使用带有 gradle 的 javadoc doclet,所以我需要使用包 tools.jar,它位于 jdk 的 lib 文件夹中(在我的例子中是 1.6.0_26)。
关键是 gradle 不会自动获取它,所以我将该工具包添加到我的 libs 文件夹,然后将其添加到 dependencies.gradle 。
现在我想将它直接从我的 JDK 主页中导入到我的 dependencies.gradle 中。有没有办法做到这一点?我在 dependencies.gradle 中尝试了下一个:
compile files("$System.properties['java.home']/lib/tools.jar")
但是编译的时候没有找到。
【问题讨论】:
值得一提的是,作为解决这个问题的先行者,当我遇到这个问题时,你需要确保你确实安装了 JDK :P 并且,在某些系统上,你需要安装devel JDK包来获取tools.jar 【参考方案1】:对于 Windows,将 Gradle 属性文件的 JDK 主路径添加为 org.gradle.java.home。 如果您没有 gradle.properties 文件,则创建一个新文件并添加
例如:org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_241
【讨论】:
【参考方案2】:在 macOS Big Sur 中
由于环境变量 JAVA_HOME
未在 macOS Big Sur 中正确设置而发生此问题。
第 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 步 - 使用 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
【讨论】:
【参考方案3】:我的 Android Studio 版本:4.2.1
"tools.jar" 由 Oracle JDK 提供,这是 android studio 编译所需的 - 在我的 PC 上将 android studio 更新到最新版本后,我遇到了这个问题。
要解决此问题,请按照以下步骤操作:
在 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"
如果假设您的 PC 中没有安装 JDK, 请从 Oracle Java 网站下载并安装 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
在系统环境变量中设置JDK和JRE路径(从步骤2中提到的网页下载)
A) 按 windows 键输入“编辑系统环境变量”并打开应用程序
B) 转到高级 -> 环境变量 在系统变量下添加 JAVA_HOME 和 JRE_HOME 如下
Set Windows system environment variable
-
在用户变量下的 Path 环境变量中添加 jdk lib 路径(只有在前面的步骤没有解决错误时才需要此步骤)
C:\Program Files\Java\jdk1.X.Y_ABC\lib
【讨论】:
【参考方案4】:找不到 tools.jar
MacOS
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
然后重启 Shell
【讨论】:
【参考方案5】:对我来说,在尝试使用音频播放器颤振库后出现此错误。 为了解决我得到了文件夹的 tools.jar:
C:\Program Files\Android\Android Studio\jre\lib
粘贴在上面
C:\Program Files\Java\jre1.8.0_181\lib.
在此之后构建工作正常。
【讨论】:
【参考方案6】:我在 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 无法正常工作的原因。
【讨论】:
谢谢!将 $JAVA_HOME 环境添加到我的.zshrc
并将其添加到 gradle.properties
为我做了:D【参考方案7】:
为我解决了以下问题:
-
在 C:\Program Files\Android\Android Studio\jre\lib 中找到 tools.jar
复制粘贴到 C:\Program Files (x86)\Java\jre1.8.0_271\lib
再次运行代码,它运行正常。
【讨论】:
您好!感谢您的回答:) 我确信这有效....但是,请检查此问题中的其他答案。它将帮助您将来了解 Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK) 之间的区别。【参考方案8】:将以下代码行放入 gradle.properties 文件中:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Example image
【讨论】:
【参考方案9】:我通过这种方式解决了问题:
在http://www.java2s.com/Code/Jar/t/Downloadtools180jar.htm上下载文件tools-1.8.0.jar 解压文件并重命名为 tools.jar 复制到 C:\Program Files\Java\jre1.8.0_191\lib 文件夹 重试【讨论】:
不得不复制到C:\Program Files (x86)\Java\jre1.8.0_211
和C:\Program Files (x86)\Java\jre1.8.0_251
【参考方案10】:
我已经尝试了大多数***选项,但我的环境设置似乎有问题,所以它们没有帮助。为我解决问题的是重新安装 jdk1.8.0_201
和 jre1.8.0_201
,这为我解决了错误。希望对某人有所帮助。
【讨论】:
【参考方案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
。
【讨论】:
【参考方案12】:如果您使用终端构建并且遇到此错误,您可以在 gradle.properties
文件中指向与 android studio 捆绑的 jdk:
org.gradle.java.home=/usr/local/android-studio/jre
【讨论】:
【参考方案13】:在我的系统(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
这对我有用!
【讨论】:
同样的问题,为我修复了,Win 10/Android Studio 也是如此。此外,上述解决方案实际上似乎都没有下载“Tools.jar”......只是jre没有附带) 也为我工作。我在包含org.gradle.java.home=E:\\Android Studio\\jre
的项目根目录中创建了一个 gradle.properties【参考方案14】:
在 CentOS7 中,开发包会安装 tools.jar。该文件在 java-1.8.0-openjdk 中不存在
sudo yum install java-1.8.0-openjdk-devel
【讨论】:
谢谢理查德!它真的帮助了我!我正在努力运行“react-native run-android”并收到错误:*出了什么问题:任务':app:compileDebugJavaWithJavac'的执行失败。 > 找不到 tools.jar。请检查 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre 是否包含有效的 JDK 安装。现在它正在工作!再次感谢! 谢谢理查德..它也对我有用。基本上这是一个 JAVA_HOME 路径问题,它试图在所需的 java jdk 路径中找到 tools.jar。 我正在使用 Amazon Linux AMI,这个解决方案运行良好。【参考方案15】:在 Windows 10 上,我遇到了同样的问题,这就是我解决问题的方法;
-
访问
Advance System Settings>Environment Variables>System
Variables
选择PATH覆盖默认
C:\ProgramData\Oracle\Java\javapath
使用您自己的 jdk 安装,即 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_162
【讨论】:
这应该是 Windows 的公认答案 :) --thanks【参考方案16】:我有一个使用 Ubuntu 的类似案例。该机器只安装了 JRE。所以,我只是执行了下面的命令来安装 JDK。
sudo apt install openjdk-8-jdk
【讨论】:
是的,安装 JDK 而不是 JRE 也解决了我的问题。 即使我安装了 java 并且我看到了 openjdk 的文件夹,我也遇到了同样的问题。后来我才意识到该文件夹只安装了 JRE。不是 JDK。【参考方案17】:这对我有用:
我收到消息
在 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 文件夹中。 重试。任务“:app:compileDebugJavaWithJavac”执行失败。
找不到 tools.jar。请检查 C:\Program Files\Java\jre1.8.0_121 是否包含有效的 JDK 安装。
【讨论】:
【参考方案18】:在“Open Gradle Run Configuration”中通过JAVA_HOME选项卡添加JDK路径即可解决问题。
【讨论】:
【参考方案19】:将此添加到gradle.properties
:
org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_91
【讨论】:
不要忘记使用双反斜杠。例如:org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\
.【参考方案20】:
Linux
在 nano 或 gedit 等任何文本编辑器中打开 /etc/environment
并添加以下行:
JAVA_HOME="/usr/lib/jvm/open-jdk"
Windows
-
启动系统控制面板小程序(开始 - 设置 - 控制
面板 - 系统)。
选择高级选项卡。
单击环境
变量按钮。
在系统变量下,点击添加按钮,然后通过以下几行:
在变量名中:JAVA_HOME
在变量值中:C:\Program Files\Java\jdk1.x.x_xxx
x.x_xxx
jdk 版本,你可以从这里得到你的 jdk 版本C:\Program Files\Java
在系统变量下,选择路径,然后单击编辑,然后单击新建按钮,然后通过以下行:
%JAVA_HOME%/bin;
【讨论】:
路径可能略有不同。在 Fedora 中,这对我有用JAVA_HOME="/usr/lib/jvm/java-openjdk"
【参考方案21】:
在我的情况下(Windows 10)在 Java 更新后我丢失了我的环境变量,所以我修复了再次添加变量,基于以下步骤https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html
【讨论】:
【参考方案22】:像其他答案一样,我在 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 指定为默认值【讨论】:
【参考方案23】:我在使用 Eclipse 尝试执行 Gradle 任务时遇到了同样的错误。每次我运行命令(即战争)时,进程都会抛出异常,例如:
找不到 tools.jar。请检查 C:\Program Files\Java\Jre8" 是否是有效的 JDK 安装。
我尝试了这篇文章中列出的解决方案,但没有一个解决了这个问题。这是我的解决方案:
-
转到“Gradle 任务”视图
右键单击要执行的任务
选择打开 Gradle 运行配置
在“Java Home”选项卡中选择您的本地 JDK 存储库,然后单击“确定”
再次奔跑,尽情享受吧!
【讨论】:
经过数小时的搜索,我找到了这个答案,这终于奏效了。非常感谢! 我找不到 Open Gradle Run 和 Java Home。你能进一步解释一下吗? 对此不熟悉,如何“转到“Gradle 任务”视图”?我在 View 菜单下没有看到任何 Gradle,也没有看到任何类似的标签?【参考方案24】:我刚刚添加了一个gradle.properties
文件,内容如下:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
【讨论】:
在linux上也可以编辑~/.gradle/gradle.properties
文件,添加org.gradle.java.home=/usr/lib/jvm/java
。在 Fedora 24 上为我工作。【参考方案25】:
我也在为这个解决方案而苦苦挣扎。如here 所述,使用 Gradle 找到了更好的方法。 我们可以从 Gradle 本身获取 JVM/JDK 信息。
dependencies
runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
如此简单。
【讨论】:
如果我使用compile
而不是runtime
,这对我有用
我喜欢这个解决方案。它既美观又便携。
此解决方案不适用于 Gradle 4.x。我收到了NullPointerException
。
当最新的 JDK 没有可用的 tools.jar 时,我可以想象它会返回 null。见github.com/gradle/gradle/blob/master/subprojects/base-services/…【参考方案26】:
我在尝试通过 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;
重新打开命令提示符并应该运行。
【讨论】:
tool.jar 在%JAVA_HOME%\lib;
而不是bin
文件夹中。
这是否意味着我们应该将%JAVA_HOME%/bin
和%JAVA_HOME%/lib
添加到Path
变量中?
尽管 tools.jar 确实在 \lib 中,但在解决方案中只将 \bin 添加到路径对我有用,但不要问为什么。
通常需要重启/注销才能使更改生效。
我不得不删除 PATH 条目 C:\ProgramData\Oracle\Java\javapath 并将其替换为 C:\ProgramData\Oracle\Java\jdk1.8.xxx 它默认为姐妹 JRE目录【参考方案27】:
可能晚了两年,但我最近遇到了同样的问题,这是我找到this post后最终得到的解决方案:
import javax.tools.ToolProvider
dependencies
compile (
files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
...
如果 java.home 指向一个不在 JDK 目录下的目录,甚至在 Mac OS 上你应该有 classes.jar 而不是 tools.jar,它应该可以工作。
【讨论】:
无法在空对象上调用 getURLs() 方法【参考方案28】:找到了。 系统属性“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")
【讨论】:
那么,如何用gradle在idea中设置java.home? 对 mac 用户有什么帮助吗?【参考方案29】:您是否确保 tools.jar 在编译类路径中出现?可能路径不正确。
task debug <<
configurations.compile.each println it
【讨论】:
是的,它确实进入了类路径,但仍然遇到问题。以上是关于Gradle 没有找到 tools.jar的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 没有找到我使用 Kotlin 和 JUnit 5 进行的测试
Gradle 找不到集成测试、JUnit 5 和 Spring Boot:没有找到给定的测试包括:
Gradle 在哪里找到“proguard-android-optimize.txt”?
Gradle的使用——快速找到自己想要在gradle中使用的jar包