Дженкинс, указав JAVA_HOME

Я установил openjdk-6-jdk на свой ящик с Ubuntu, используя apt-get.

В системной информации Дженкинс говорит мне, что Java.Home - это /usr/lib/jvm/java-6-openjdk/jre

Однако, когда я указываю этот каталог как JAVA_HOME в Jenkins: «настроить систему», он возвращает сообщение об ошибке, в котором говорится, что каталог не похож на каталог jdk.

он также не может установить мою установку maven.

Я упускаю что-то очевидное?


person NimChimpsky    schedule 18.11.2011    source источник


Ответы (14)


Для вашей переменной JAVA_HOME должно быть задано значение /usr/lib/jvm/java-6-openjdk, и она должна быть доступна пользователю, запускающему Jenkins.

От комментария Кайла Стрэнда:

По состоянию на апрель 2015 года (я думаю) для Jenkins требуется Java7. Также обратите внимание, что для двоичного пути java (JAVA) должна быть установлена ​​правильная версия, если по умолчанию в системе по-прежнему используется Java 6. Наконец, для тех, кому интересно, где установлены эти переменные, они находятся в файле конфигурации, указанном вместе с инструкциями по установке на Jenkins. веб-страница (например, для Debian это /etc/default/jenkins).

person Ernesto Campohermoso    schedule 18.11.2011
comment
По состоянию на апрель 2015 года (я думаю) Дженкинсу требуется Java7. Также обратите внимание, что для двоичного пути java (JAVA) должна быть установлена ​​правильная версия, если по умолчанию в системе по-прежнему используется Java 6. Наконец, для тех, кто интересуется, где установлены эти переменные, они находятся в файле конфигурации, указанном в инструкциях по установке на Jenkins. веб-страница (например, для Debian это /etc/default/jenkins). - person Kyle Strand; 11.06.2015

Используя Jenkins 2 (2.3.2 в моем случае), кажется, что правильный способ вставить следующее в ваш файл конвейера:

env.JAVA_HOME="${tool 'jdk1.8.0_111'}"
env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"

«jdk1.8.0_111» — это имя конфигурации Java, изначально зарегистрированной в Jenkins.

person user1767316    schedule 28.03.2017
comment
Это также соответствует рекомендации Cloudbees: Pipeline" rel="nofollow noreferrer">support.cloudbees.com/hc/en-us/articles/ - person Vijay Ramaswamy; 16.01.2019
comment
Есть ли способ получить дом Java из инструмента, используя его имя вне конвейеров? Например. на свободной работе. - person BlackEye; 18.02.2020

В системах CentOS 6.x и Redhat 6.x пакет openjdk-devel содержит файл jdk. Это достаточно разумно, если вы знакомы с шаблоном -devel, используемым в RedHat, но сбивает с толку, если вы ищете пакет jdk, соответствующий стандартам именования java.

person Mike Lococo    schedule 25.07.2012

Я просто хотел добавить решение для машин с Windows.

  • Windows Server 2008 R2 Стандартный, пакет обновления 1 (SP1)
  • Дженкинс 2.89.4
  • Java версии 8.171

Симптом: служба Jenkins запускается и тут же останавливается.
Jenkins.wrapper.log содержит строку, указывающую неверный путь к Java:

- Запуск C:\Program Files\Java\jre1.8.0_141\bin\java -Xrs -Xmx6g -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Program Files (x86)\Jenkins\jenkins.war" --httpPort=8080 --webroot="C:\Program Files (x86)\Jenkins\war"

Исправление: у Дженкинса путь жестко запрограммирован в jenkins.xml. Измените путь к новому местоположению Java.

<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>C:\Program Files\Java\jre1.8.0_171\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

Вы также можете использовать переменные среды Windows, но мне это не удалось, и я не думаю, что установщик Java обновляет их, поэтому вам все равно придется обновлять это вручную каждый раз.

<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>%JAVA_HOME%\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
person BClaydon    schedule 24.04.2018

Я столкнулся с той же проблемой, и для меня понижение версии JAVA_HOME с jdk12 не было правдоподобным вариантом, как указано в ответ. Поэтому я провел эксперимент методом проб и ошибок и запустил Jenkins, даже не понизив версию JAVA_HOME.

Шаги:

  • открыть конфигурацию $ sudo vi /etc/init.d/jenkins
  • Прокомментируйте следующую строку:
 #JAVA=`type -p java`
  • Введена линия, упомянутая ниже. (Примечание. Вставьте конкретный путь JDK на свой компьютер.)
 JAVA=`type -p /usr/lib/jdk8/bin/java`
  • Перезагрузить конфигурацию диспетчера systemd: $ sudo systemctl daemon-reload
  • Запустить службу Дженкинса: $ sudo systemctl start jenkins
    ● jenkins.service - LSB: Start Jenkins at boot time
       Loaded: loaded (/etc/init.d/jenkins; generated)
       Active: active (exited) since Sun 2020-05-31 21:05:30 CEST; 9min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 9055 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
    
person ViV    schedule 31.05.2020
comment
Спасибо! У меня работало в Ubuntu 20.04 - person Jaineel Mamtora; 22.05.2021

openjdk-6 - это среда выполнения Java, а не JDK (например, комплект разработки, который содержит javac). Установите openjdk-6-jdk.

Maven также нуждается в JDK.

[EDIT] Когда JDK установлен, используйте /usr/lib/jvm/java-6-openjdk вместо JAVA_HOME (т. е. без части jre).

person Aaron Digulla    schedule 18.11.2011
comment
это была опечатка в вопросе, я установил полный jdk (работает javac). Также mvn работает вне jenkins. - person NimChimpsky; 18.11.2011
comment
Сначала я подумал, да ладно, там нужная папка jdk, но предложенная установка, вероятно, помогла, так как у меня не было всего необходимого jdk. - person John Doe; 20.06.2012

На случай, если у кого-то возникнут подобные проблемы, я использовал установку sudo apt-get по умолчанию для соответствующих пакетов, и вот правильные настройки:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

а также

MAVEN_HOME=/usr/share/maven2
person NimChimpsky    schedule 25.11.2011

Это старый поток, но для более поздних версий Jenkins (в моем случае Jenkins 2.135), для которых требуется конкретный java JDK, должно помочь следующее:

Примечание. Это для Centos 7, другие дистрибутивы могут иметь другие местоположения каталогов, хотя я считаю, что они верны и для Ubuntu.

Измените /etc/sysconfig/jenkins и установите переменную JENKINS_JAVA_CMD="/<your desired jvm>/bin/java" (требуется root-доступ)

Пример:

JENKINS_JAVA_CMD="/usr/lib/jvm/java-1.8.0-openjdk/bin/java"

Перезапустите Jenkins (если jenkins запускается как служба sudo service jenkins stop, затем sudo service jenkins start)

Вышеуказанное исправило мою установку Jenkins, которая не запускается после обновления до Java 10 и Jenkins до 2.135.

java jenkins java-home ubuntu центос

person D Turner    schedule 31.07.2018

Для тех из вас, кто столкнулся с этой проблемой и имеет доступ к настройке своих агентов Jenkins, вы можете установить JAVA_HOME на странице Jenkins> Nodes> «имя агента»> «Настройка»:

Настройка переменных среды "для каждого агента"

person cstroe    schedule 23.06.2019
comment
Я столкнулся с той же проблемой, связанной с JAVA_HOME. это дает мне ошибку, например, «java» не является исполняемой на Java_Home или Path. Как мы можем установить переменную среды Java_home из файла докера в Jenkins? - person Har devgun; 01.06.2020

В Дженкинсе попробуйте установить JAVA_HOME на /usr/lib/jvm/java-6-openjdk

person Casey    schedule 18.11.2011
comment
хммм... что ты имеешь в виду под Дженкинсом? - person jayunit100; 18.06.2012
comment
@ jayunit100 Я думаю, он имел в виду конфигурацию jenkins (/jenkins/configure), но у меня это не сработало. - person John Doe; 20.06.2012

При обновлении с Ubuntu 10.0.4 до 12.0.4 мы ошиблись. У нас была настроена (автоматически настроена) установка JDK, указывающая на /usr/lib/jvm/java-6-openjdk, которая больше не содержала JDK, изменение на /usr/lib/jvm/default-java исправлено и должно сделать для бесшовного обновления java-7.

Итак, отвечая на вопрос: не указывайте JAVA_HOME в Ubuntu.

person TimP    schedule 13.08.2012

В Ubuntu 12.04 мне пришлось установить openjdk-7-jdk

тогда javac работал!

then I could use

/usr/lib/jvm/java-7-openjdk-amd64

as path and jenkins didn't complain anymore.

person lutinwood    schedule 03.06.2014

Загрузите пакет rpm с http://pkg.jenkins-ci.org/redhat/. вы можете указать дополнительное местоположение java, например, у меня есть java по умолчанию 1.7 в моей системе, но я использую /opt/jdk1.8.0_60/bin/java для jenkins. Откройте сценарий запуска jenkins /etc/init.d/jenkins и добавьте сюда дополнительную java, в моем случае я добавил /opt/jdk1.8.0_60/bin/java,

Поиск пригодной для использования Java, поскольку /usr/bin/java может не указывать на минимальную версию, требуемую Jenkins.

См. http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html

кандидаты = "/opt/jdk1.8.0_60/bin/java

person Hasan S Syed    schedule 22.08.2017

я увидел в Eclipse> Настройки> установленные JRE> Определение JRE я нашел каталог java_home, так что это /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

person nizar ouerghi    schedule 30.04.2013