Java Jenkins Windows slave:此环境中未提供编译器。也许您运行的是JRE而不是JDK

Java Jenkins Windows slave:此环境中未提供编译器。也许您运行的是JRE而不是JDK,java,jenkins,java-8,jenkins-slave,Java,Jenkins,Java 8,Jenkins Slave,我刚刚安装了一个运行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\Oracl

我刚刚安装了一个运行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日

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

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


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

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


方法1

请通过以下步骤将Windows节点配置为指向要使用的JDK:

  • 转到
    Manage Jenkins
    Global Tool Configuration
    >JDK>
    添加JDK

    由于您已经安装了Java,请取消选中“自动安装”

    Name
    部分,只需提供一些有意义的标识符,而不一定是
    JAVA\u HOME
    。现在,在
    JAVA\u HOME
    文本框中,您可以提供您想要的任何值,因为您将为Windows节点使用不同的值

  • 现在转到
    管理Jenkins
    管理节点
    >(转到Windows节点的
    配置
    部分)>
    节点属性

    现在启用显示
    刀具位置的复选框
    。单击下拉列表中的
    Add
    >,在
    Global Tool Configuration
    部分选择您提供给JDK的名称

    现在,您必须为Windows节点提供JAVA_主路径。因此,无论它在哪里,只要在
    Home
    文本框中提及该路径即可,如下所示:


  • 方法2

    转到
    管理Jenkins
    管理节点
    >(转到Windows节点的
    配置
    部分)>
    节点属性

    现在启用显示
    环境变量
    添加

    • 名称
      文本框中,写入
      路径
      (而不是
      路径
    • Value
      文本框中,编写JDK安装路径直到
      bin
      ,如下所示

    在您的情况下,添加以下内容:
    C:\ProgramFiles\Java\jdk1.8.0\u 221\bin;C:\Windows\System32;C:\maven-3.6.1\bin;%路径%

    我并没有在PATH中设置Maven,所以我将其添加到节点的配置中,如上图所示

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

    作业的JDK配置

    作业的命令

    作业的输出


    方法3

    在Windows节点的配置中,启用
    环境变量
    ,并在下面添加具有相关值的变量

    名称:
    java.home

    值:
    C:\ProgramFiles\Java\jdk1.8.0\u 221\jre

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

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

    当使用
    mvn-version
    时,Maven使用Java的内部
    Java.home
    属性。此属性与
    JAVA\u HOME
    环境设置不同,因此可能会欺骗您。它实际上是一个动态属性,显示运行代码的JRE


    Ref:

    路径是否正确
    C:\Program Files\Java\jdk1.8.0\u 221\\bin
    ?设置环境变量后是否重新启动了进程?@Naman:是的,路径正确,我可以在该文件中的命令提示符下运行Java和javac命令node@AndiCover:是尝试多次重新启动服务器和jenkins从属服务。所以我想知道,我是否需要在中配置settings.xmlmaven@TienDungTran:在命令提示符下键入
    where java
    会给您带来什么?实际上,我不想在全局工具配置中修复java_HOME,因为我有一些linux从机。第二,如果我同意你的配置。我必须在这个从机上运行的每个作业构建确认中选择JDK,请参见我的图片。我想使用一个(系统)JDK,该JDK将从此节点中的环境变量获取,因此我可以切换到另一个从属节点,而无需更改JDK选项。方法2仍然存在此问题,这是我的屏幕截图,我也尝试重新启动此服务器。请断开连接,然后连接该节点。不幸的是,此问题仍然存在。请使用
    mvn-v
    的输出更新您的帖子。另外,在构建过程中,是否可以打印
    echo%Path%