SystemdDoctor
служба не работает сборка java

Сервер сборки не запускается: версия Java не подходит

Серверы сборки жёстко требуют определённых версий среды исполнения и отказываются работать на неподходящей. Осложняет разбор то, что на машине обычно несколько версий, и служба выбирает не ту, что нужна: выбор зависит от переменных окружения службы, а не от вашего профиля.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Установлена неподходящая версия среды исполнения

    Программа проверяет версию при запуске и завершается с сообщением о несовместимости.

  2. Служба выбирает не ту версию из нескольких

    На машине несколько версий, и служба берёт версию по умолчанию системы, а не нужную. Ваш профиль на неё не влияет.

  3. Памяти под сборки не хватает и служба падает позже

    Запуск проходит, а при сборке среда исполнения не может выделить память и завершается. Это уже не версия, а ограничения.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Сообщение при запуске: версия и путь к среде исполнения.

journalctl -u jenkins -n 40 --no-pager

Какая версия достаётся процессу от имени пользователя службы.

sudo systemd-run -q --pipe --property=User=jenkins java -version 2>&1 | head -3

Окружение и предел памяти службы.

systemctl show jenkins -p Environment -p MemoryMax

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Установлена неподходящая версия среды исполнения
Почему происходит
Программа проверяет версию при запуске и завершается с сообщением о несовместимости.
Как проверить
Посмотрите сообщение и установленные версии.
journalctl -u jenkins -n 20 --no-pager | grep -iE "java|version"
update-alternatives --list java 2>/dev/null || ls /usr/lib/jvm/ 2>/dev/null
Как исправить
Установите требуемую версию среды исполнения. Требования к версии обычно указаны в примечаниях к выпуску программы.
2. Служба выбирает не ту версию из нескольких
Почему происходит
На машине несколько версий, и служба берёт версию по умолчанию системы, а не нужную. Ваш профиль на неё не влияет.
Как проверить
Посмотрите, какая версия достаётся службе.
systemctl show jenkins -p Environment -p ExecStart
sudo systemd-run -q --pipe --property=User=jenkins java -version 2>&1 | head -3
Как исправить
Задайте путь к нужной среде исполнения переменной окружения службы или укажите её исполняемый файл в команде запуска явно.
[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
3. Памяти под сборки не хватает и служба падает позже
Почему происходит
Запуск проходит, а при сборке среда исполнения не может выделить память и завершается. Это уже не версия, а ограничения.
Как проверить
Посмотрите ограничения памяти и последние сообщения.
systemctl show jenkins -p MemoryMax -p MemoryCurrent
journalctl -u jenkins -n 30 --no-pager | grep -iE "OutOfMemory|heap"
Как исправить
Согласуйте предел памяти службы с размером кучи среды исполнения. Предел меньше кучи означает остановку процесса ядром при нагрузке.

Пример вывода

Установлена неподходящая версия среды исполнения. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

jenkins[6200]: java.lang.UnsupportedClassVersionError: hudson/WebAppMain has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
systemd[1]: jenkins.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Источники

  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено запуском сервера сборки на неподходящей версии среды исполнения.
    собственная проверка, systemd 255
    сверено 15 сентября 2026
  • systemd.exec(5)
    Environment= и окружение процессов службы.
    официальная документация, systemd 255
    сверено 15 сентября 2026