Jenkins Blue Ocean: Maven не видит Java

Я получаю сообщение об ошибке "/var/jenkins_home/tools/hudson.model.JDK/jdk8/bin/java: not found:", хотя путь существует:

   

[edi-debatcher_master-LNI22Y2C5V3VECCBCFPVB3ZUWJJNMLK6LIFEQ6V3OYH52T74NU3A@2] Running shell script
+ echo PATH = /var/jenkins_home/tools/hudson.model.JDK/jdk8/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3/bin:/var/jenkins_home/tools/hudson.model.JDK/jdk8/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
PATH = /var/jenkins_home/tools/hudson.model.JDK/jdk8/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3/bin:/var/jenkins_home/tools/hudson.model.JDK/jdk8/bin:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
+ echo M2_HOME = /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3
M2_HOME = /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3
+ mvn -version
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.5.3/bin/mvn: exec: line 199: /var/jenkins_home/tools/hudson.model.JDK/jdk8/bin/java: not found

Я использую функцию Jenkins Blue Ocean, GitHub Jenkinsfile. У меня есть "jdk8" и "Maven 3.5.3", определенные в Global Tool Configuration, "autoinstall" отмечен.

Вот мой Jenkinsfile:


    pipeline {
      agent any
      stages {
        stage('Initialize') {
          steps {
            sh '''
               echo "PATH = ${PATH}"
               echo "M2_HOME = ${M2_HOME}"
               mvn --version 
               '''
          }
        }
        stage('Build') {
          steps {
            sh 'mvn -Dmaven.test.failure.ignore=true install'
          }
          post {
            success {
              junit 'target/surefire-reports/**/*.xml'
            }
          }
        }
      }
      tools {
        maven 'Maven 3.5.3'
        jdk 'jdk8'
      }
      post {
        always {
        deleteDir()
        }
      }
    }


person user1198042    schedule 09.04.2018    source источник
comment
Вы уверены, что проверяете машину с ведомым устройством jenkins, которое выполняет вашу работу (а не другим ведомым устройством или мастером)?   -  person Bartosz Bilicki    schedule 09.04.2018
comment
Я нашел обходной путь: вместо автоматической установки Oracle JDK я использовал уже установленную версию 8 OpenJDK по умолчанию: /usr/lib/jvm/java-1.8-openjdk ... возможно, что-то не так с Oracle JDK интеграция с автоматической установкой.   -  person user1198042    schedule 09.04.2018
comment
Возможный дубликат: stackoverflow.com/questions/50120476/   -  person Arigion    schedule 02.09.2018


Ответы (3)


Вы используете неправильную версию файла (здесь java) для системы.

Проблема: файл существует и не может быть запущен. Сообщение об ошибке: «Нет такого файла или каталога».

Решение: вы используете неправильный версию файла для вашей системы.

Проблема может возникнуть, например, если вы запускаете установку Jenkins в контейнере Docker с Alpine Linux, поскольку Alpine использует musl libc. Двоичные файлы Oracle Java работают только в glibc.

person Arigion    schedule 02.09.2018

Проблема заключалась в том, что автоматическая установка Oracle JDK на самом деле ничего не делала в моей системе (подтверждено проверкой системных свойств Jenkins для Java). Я обнаружил, что openjdk 1.8 уже находится в этом контейнере, поэтому я вручную указал на него JAVA_HOME вместо того, чтобы полагаться на автоматическую установку Oracle JDK.

person user1198042    schedule 28.04.2018
comment
Я столкнулся с той же проблемой и с вами. Итак, теперь вы просто используете OpenJDK, верно? - person Xin Meng; 01.05.2018

Как только я изменил настройку JDK проекта на system, моя сборка прошла мимо этой ошибки.

person rekwet    schedule 02.09.2018
comment
Добро пожаловать в SO. Действительно хороший ответ объяснил бы, где находится этот параметр (я предполагаю, что он в Дженкинсе?) И почему сработало изменение этого конкретного параметра. - person arnt; 02.09.2018