猿问

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

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


我将从节点配置为Technext建议的方法2

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

http://img4.mukewang.com/64af8f2300010dfa07820262.jpg

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



慕森卡
浏览 94回答 1
1回答

翻翻过去那场雪

您可以根据适合您的情况使用以下任何一种方法:方法1)请按照以下步骤配置您的 Windows 节点,使其指向您要使用的 JDK:转到Manage Jenkins>> Global Tool ConfigurationJDK>Add JDK由于您已经安装了 Java,因此取消选中该框Install automatically在Name部分中,只需提供一些有意义的标识符,不一定JAVA_HOME。现在,您可以在JAVA_HOME文本框中提供任何您想要的值,因为无论如何您都会为 Windows 节点使用不同的值。现在转到Manage Jenkins>> Manage Nodes(转到ConfigureWindows 节点的部分)>Node Properties现在启用显示 的复选框Tool Locations。单击Add> 从下拉列表中选择您在Global Tool Configuration部分中提供给 JDK 的名称现在,您必须在此处提供 Windows 节点的 JAVA_HOME 路径。因此,无论它在哪里,只需在文本框中提及该路径,Home如下所示:方法2)转至Manage Jenkins>> Manage Nodes(转至ConfigureWindows 节点的部分)>Node PropertiesEnvironment 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 正在运行您的代码。
随时随地看视频慕课网APP

相关分类

Java
我要回答