Jenkins Windows slave: 这个环境没有提供编译器。也许您 运行 在 JRE 而不是 JDK

Jenkins Windows slave: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK

我刚刚设置了一个新的 jenkins slave,它是 运行ning Windows server 2012。我已经安装了 jdk-8u221-windows-x64 并设置了 Java_home, 路径如下

C:\Users\Administrator>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_221\

C:\Users\Administrator>echo %PATH%
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\
Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\
Program Files\Amazon\cfn-bootstrap\;C:\Program Files\Git\cmd;C:\Program Files\Ja
va\jdk1.8.0_221\bin;C:\maven\bin;C:\maven\bin

然而,build job 运行ning in this slave 总是抱怨:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK

知道是什么原因造成的吗?

2019 年 9 月 11 日更新

我按照Technext建议的方法2配置slave节点

在作业构建配置中,我在 JDK 选项中选择了(系统)。如果我选择 JDK 8 update 221,此构建作业 运行 成功,但我想使用一个(系统)JDK,它将从此节点中的环境变量中获取,因此我可以切换到另一个从节点而不更改 JDK 选项。

但是,当我远程连接到此服务器并打开命令提示符时,转到此项目的工作区文件夹,假设:C:\jenkins_slave\workspace\project01\,然后键入命令:mvn clean install,它运行 没有抱怨 Jenkins 的 jdk 或 jre 作为 运行。

您可以根据自己的需要使用以下任何一种方法:


方法一)

请按照以下步骤配置您的 Windows' 节点,使其指向您要使用的 JDK:

  1. 前往 Manage Jenkins > Global Tool Configuration > JDK > Add JDK

    因为您已经安装了 Java,请取消选中复选框 Install automatically

    Name部分,提供一些有意义的标识符即可,不一定JAVA_HOME。现在在 JAVA_HOME 文本框中,您可以提供任何您想要的值,因为您无论如何都会为您的 Windows 节点使用不同的值。

  1. 现在转到 Manage Jenkins > Manage Nodes >(转到 Windows 节点的 Configure 部分)> Node Properties

    现在启用 Tool Locations 复选框。单击 Add > 从下拉列表中,select 您在 Global Tool Configuration 部分 JDK 中提供的名称

    现在您必须为 Windows 节点提供 JAVA_HOME 路径。所以无论它在哪里,只需在 Home 文本框中提及该路径,如下所示:


方法二)

转到 Manage Jenkins > Manage Nodes >(转到 Windows 节点的 Configure 部分)> Node Properties

现在启用显示 Environment variables > Add

的复选框
  • Name文本框中,写Path(不是PATH
  • Value文本框中,写下你的JDK安装路径到bin,如下图

根据您的情况,添加以下内容:C:\Program Files\Java\jdk1.8.0_221\bin;C:\Windows\System32;C:\maven-3.6.1\bin;%PATH%

我没有在 PATH 中设置 Maven,所以我将它添加到 Node 的配置中,如上所示。

注意:在 Value 文本框中,使用分号 (;) 作为分隔符而不是逗号 (,)

作业的 JDK 配置:

工作命令:

作业的输出:


方法三)

在您的 Windows 节点配置中,启用 Environment variables 并添加以下具有 相关

的变量

姓名:java.home

值:C:\Program Files\Java\jdk1.8.0_221\jre

:是java.home(如下图都是小写的)

JAVA_HOME 需要指向 JDK 安装(maven 需要 tools.jar)但是 Maven 实际上 在 JDK 到 运行 本身。

当使用 mvn -version 时,Maven 使用 Java 的内部 java.home 属性。此 属性 与 JAVA_HOME 环境设置不同,因此它可能会愚弄您。它实际上是一个动态 属性 向您显示哪个 JRE 运行正在您的代码中。

参考:Java_home in Maven