Gradle找不到tools.jar

ras*_*ayu 153 java groovy build gradle

我正在使用带有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")
Run Code Online (Sandbox Code Playgroud)

但它在编译时没有找到它.

ben*_*bia 132

当我尝试通过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`文件夹中. (14认同)
  • 这是否意味着我们应该将`%JAVA_HOME%/ bin`和`%JAVA_HOME%/ lib`添加到`Path`变量中? (5认同)
  • 我不得不删除PATH条目C:\ ProgramData\Oracle\Java\javapath并将其替换为C:\ ProgramData\Oracle\Java\jdk1.8.xxx它默认为姐妹JRE目录 (4认同)
  • 尽管tools.jar确实在\ lib中,但只有\ bin添加到路径中,因为在解决方案中为我工作但不要问为什么. (3认同)

ras*_*ayu 76

找到了.系统属性'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")
Run Code Online (Sandbox Code Playgroud)

  • 那么,如何用gradle设置java.home? (26认同)

rat*_*tek 69

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

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

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

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

再跑一次,享受吧!

  • 我找不到Open Gradle Run和Java Home.你能进一步解释一下吗 (5认同)
  • 经过数小时的搜索,我找到了这个答案,这终于奏效了。非常感谢! (2认同)

bon*_*gen 44

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

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Run Code Online (Sandbox Code Playgroud)

  • 在linux上,你也可以编辑`〜/ .gradle/gradle.properties`文件,添加`org.gradle.java.home =/usr/lib/jvm/java`.在Fedora 24上为我工作. (4认同)

Ita*_*tto 29

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

sudo apt install openjdk-8-jdk

  • 是的,安装 JDK 而不是 JRE 也为我解决了这个问题。 (2认同)

小智 18

我对这个解决方案也很挣扎.找到一个更好的方法将其与摇篮描述这里.我们可以从Gradle本身获取JVM/JDK信息.

dependencies {
   runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}
Run Code Online (Sandbox Code Playgroud)

很简单.

  • 如果我使用`compile`而不是`runtime`,这对我有用 (2认同)
  • 该解决方案不适用于Gradle4.x。我得到一个`NullPointerException`。 (2认同)

azi*_*ian 15

将此添加到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 \`. (5认同)

小智 13

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

sudo yum install java-1.8.0-openjdk-devel


And*_*LED 11

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

import javax.tools.ToolProvider

dependencies {
  compile (
    files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

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


Spk*_*ngR 10

我在 Mac 上的解决方案:

将此行添加到gradle.properties

org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

不是这个:

org.gradle.java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Run Code Online (Sandbox Code Playgroud)

你可以打开最后一个家目录,会发现没有lib/tools.jar文件存在,所以将路径更改JavaVirtualMachines/jdk1.8.0_271.jdk为对我有用。

顺便说一句,在终端中,我 echo$JAVA_HOME并获得了第一条路径,而不是第二条路径,我认为这就是我的 Gradle 无法正常工作的原因。

  • 谢谢!将 $JAVA_HOME 环境添加到我的 `.zshrc` 并将其添加到 `gradle.properties` 为我做到了:D (2认同)

Fut*_*020 10

在 macOS Big Sur 中

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

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

echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

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

/usr/libexec/java_home -V
Run Code Online (Sandbox Code Playgroud)

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

第 3 步 - 编辑.zshenv使用nano

nano ~/.zshenv
Run Code Online (Sandbox Code Playgroud)

第 4 步 - 将第 2 步中的路径添加到文件中,如下所示

export JAVA_HOME=YOUR_JAVA_PATH
Run Code Online (Sandbox Code Playgroud)

例子:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

步骤 5 - 获取更新的.zshenv文件以激活环境变量

source ~/.zshenv
Run Code Online (Sandbox Code Playgroud)

步骤 6 - 打印以确认路径

echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)


Dun*_*523 8

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

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


Wes*_*Gun 6

使用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


小智 5

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

但是,我发现它C:\Program Files\Android\Android Studio\jre\lib并尝试设置JAVA_HOME=C:\Program Files\Android\Android Studio\jre

这对我行得通)!


小智 5

为我解决的问题如下:

  1. 在C:\Program Files\Android\Android Studio\jre\lib 中找到tools.jar
  2. 复制粘贴到 C:\Program Files (x86)\Java\jre1.8.0_271\lib
  3. 再次运行代码,它起作用了。