繁体   English   中英

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

我刚刚设置了一个运行 Windows Server 2012 的新 jenkins slave。我已经安装了 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

但是,在此从站中运行的构建作业总是抱怨:

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

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

2019 年 9 月 11 日更新

我将slave节点配置为Technext建议的方法2 在此处输入图片说明

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

但是,当我远程访问此服务器并打开命令提示符时,移至该项目的工作区文件夹,例如:C:\\jenkins_slave\\workspace\\project01\\,然后键入命令:mvn clean install,它运行时没有抱怨从 Jenkins 运行的 jdk 或 jre。

您可以根据适合您的方式使用以下任何一种方法:


方法1 )

请按照以下步骤配置您的 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 > 从下拉列表中,选择您在Global Tool Configuration部分中提供给 JDK 的名称

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

在此处输入图片说明


方法2 )

转到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 配置

在此处输入图片说明

工作的命令

在此处输入图片说明

作业的输出

在此处输入图片说明


方法3 )

在 Windows 节点的配置中,启用Environment variables并使用相关值添加以下变量

名称: java.home

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

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

在此处输入图片说明

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

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

参考: Maven 中的 Java_home

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM