Jenkins Windows从站:在此环境中未提供编译器。也许您在JRE而不是JDK上运行

时间:2019-09-04 11:00:07

标签: java jenkins java-8 jenkins-slave

我刚刚设置了一个运行Windows Server 2012的新jenkins从属服务器。我已经安装了jdk-8u221-windows-x64并设置了Java_home,如下所示的路径

field_3

但是,在此从属中运行的构建作业始终会抱怨:

  

在此环境中不提供编译器。也许您在JRE而不是JDK上运行

任何可能导致这种情况的想法?

更新2019年9月11日

我将从节点配置为Technext建议的方法2 enter image description here

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

但是,当我远程到该服务器并打开命令提示符时,转到该项目的工作区文件夹,说:C:\ jenkins_slave \ workspace \ project01 \,然后键入命令:mvn clean install,它会运行无需抱怨詹金斯(Jenkins)运行的jdk或jre。

1 个答案:

答案 0 :(得分:1)

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


方法1

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

  1. 转到Manage Jenkins> Global Tool Configuration> JDK> Add JDK

    由于已经安装了Java,因此取消选中Install automatically

    Name部分中,仅提供一些有意义的标识符,不一定是JAVA_HOME。现在,在JAVA_HOME文本框中,您可以提供所需的任何值,因为无论如何您将为Windows节点使用其他值。

enter image description here

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

    现在启用显示Tool Locations的复选框。点击Add>从下拉列表中,选择Global Tool Configuration部分中提供给JDK的名称

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

enter image description here


方法2

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

现在启用显示Environment variables> Add

的复选框
  • Name文本框中,输入Path(而不是PATH
  • Value文本框中,输入JDK安装的路径,直到bin,如下所示。

enter image description here

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

我没有在PATH中设置Maven,因此如上所述将其添加到Node的配置中。

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

作业的JDK配置

enter image description here

工作命令

enter image description here

工作的输出

enter image description here


方法3

在Windows节点的配置中,启用Environment variables并添加具有 related

的以下变量

名称:java.home

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

注意:它是java.home(全部用小写字母显示,如下所示)

enter image description here

JAVA_HOME需要指向JDK安装(maven需要tools.jar),但是Maven实际上 使用JDK中的JRE来运行自身。

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

参考:Java_home in Maven