Failed to start Jenkins after Java update 11 -> 17

I’m running jenkins on EC2 instance on AWS with openjdk java 11 installed from ubuntu repo.

I’ve attempted to upgrade Java on jenkins controller by stopping the Jenkins service, installed new openjdk-17-jdk from apt repo and then started the jenkins service again, however it fails with following:

jenkins: invalid Java version: openjdk version "17.0.8.1" 2023-08-24
OpenJDK Runtime Environment (build 17.0.8.1+1-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 17.0.8.1+1-Ubuntu-0ubuntu120.04, mixed mode, sharing)

However Java 17 should be supported?

Reverting to Java 11 worked like a charm.

Jenkins setup:

Jenkins: 2.426.1
OS: Linux - 5.15.0-1039-aws
Java: 11.0.20.1 - Ubuntu (OpenJDK 64-Bit Server VM)
---
analysis-model-api:11.13.0
ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
apache-httpcomponents-client-5-api:5.2.1-1.1
authentication-tokens:1.53.v1c90fd9191a_b_
aws-credentials:218.v1b_e9466ec5da_
aws-java-sdk-ec2:1.12.586-413.v6a_6c3a_420126
aws-java-sdk-minimal:1.12.586-413.v6a_6c3a_420126
bootstrap5-api:5.3.2-2
bouncycastle-api:2.29
branch-api:2.1128.v717130d4f816
build-timeout:1.31
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloud-stats:320.v96b_65297a_4b_b_
cloudbees-folder:6.858.v898218f3609d
command-launcher:107.v773860566e2e
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.11.0-94.v3e1f4a_926e49
config-file-provider:959.vcff671a_4518b_
copyartifact:722.v0662a_9b_e22a_c
credentials:1309.v8835d63eb_d8a_
credentials-binding:642.v737c34dea_6c2
data-tables-api:1.13.6-5
display-url-api:2.200.vb_9327d658781
docker-commons:439.va_3cb_0a_6a_fb_29
docker-java-api:3.3.1-79.v20b_53427e041
docker-plugin:1.5
docker-workflow:572.v950f58993843
durable-task:523.va_a_22cf15d5e0
ec2:1648.vf3d852e00486
echarts-api:5.4.0-7
email-ext:2.102
file-parameters:316.va_83a_1221db_a_7
font-awesome-api:6.4.2-1
forensics-api:2.3.0
git:5.2.1
git-client:4.5.0
github:1.37.3.1
github-api:1.316-451.v15738eef3414
github-branch-source:1741.va_3028eb_9fd21
gitlab-api:5.3.0-91.v1f9a_fda_d654f
gitlab-branch-source:684.vea_fa_7c1e2fe3
gitlab-logo:1.1.2
gitlab-oauth:1.18
gitlab-plugin:1.7.16
gradle:2.9
h2-api:11.1.4.199-12.v9f4244395f7a_
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
http_request:1.18
instance-identity:185.v303dc7c645f9
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.15.3-372.v309620682326
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.9-1
jdk-tool:73.vddf737284550
jersey2-api:2.41-133.va_03323b_a_1396
jjwt-api:0.11.5-77.v646c772fddb_0
jquery3-api:3.7.1-1
jsch:0.2.8-65.v052c39de79b_2
junit:1240.vf9529b_881428
ldap:711.vb_d1a_491714dc
mailer:463.vedf8358e006b_
matrix-auth:3.2.1
matrix-project:818.v7eb_e657db_924
mina-sshd-api-common:2.11.0-86.v836f585d47fa_
mina-sshd-api-core:2.11.0-86.v836f585d47fa_
node-iterator-api:55.v3b_77d4032326
okhttp-api:4.11.0-157.v6852a_a_fa_ec11
pam-auth:1.10
pipeline-build-step:516.v8ee60a_81c5b_9
pipeline-github-lib:42.v0739460cda_c4
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:689.veec561a_dee13
pipeline-input-step:477.v339683a_8d55e
pipeline-maven:1362.vee39a_d4b_02b_1
pipeline-maven-api:1362.vee39a_d4b_02b_1
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2150.v4cfd8916915c
pipeline-model-definition:2.2150.v4cfd8916915c
pipeline-model-extensions:2.2150.v4cfd8916915c
pipeline-rest-api:2.34
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2150.v4cfd8916915c
pipeline-stage-view:2.34
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.6.0
popper2-api:2.11.6-4
prism-api:1.29.0-8
resource-disposer:0.23
scm-api:676.v886669a_199a_a_
script-security:1275.v23895f409fb_d
snakeyaml-api:2.2-111.vc6598e30cc65
ssh-credentials:308.ve4497b_ccd8f4
ssh-slaves:2.916.vd17b_43357ce4
sshd:3.312.v1c601b_c83b_0e
structs:325.vcb_307d2a_2782
timestamper:1.26
token-macro:384.vf35b_f26814ec
trilead-api:2.84.v72119de229b_7
variant:60.v7290fc0eb_b_cd
warnings-ng:10.5.1
workflow-aggregator:596.v8c21c963d92d
workflow-api:1283.v99c10937efcb_
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3806.va_3a_6988277b_2
workflow-durable-task-step:1289.v4d3e7b_01546b_
workflow-job:1360.vc6700e3136f5
workflow-multibranch:756.v891d88f2cd46
workflow-scm-step:415.v434365564324
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:865.v43e78cc44e0d
ws-cleanup:0.45

Providing an error or stacktrace would be the minimal requirement to understand what went wrong for you.

That message was reported by an older version of the /usr/bin/jenkins script that is used by the systemd based installers, including those for Ubuntu, Debian, Red Hat, Fedora, and others. That message should no longer be reported by the /usr/bin/jenkins script that was included in the Jenkins 2.426.1 installers. It was removed by pull request 429 that is included in Jenkins 2.426.1 and in Jenkins weekly releases beginning with 2.421.

Since you’re seeing that message, maybe you made a mistake and upgraded to Jenkins 2.426.1 by replacing the war file, instead of using the operating system installer (apt or apt-get or aptitude) to perform the upgrade?

Yup, I’ve upgraded by replacing the war file.
Because apt repo unfortunately has the latest version: “2.387.1”.

Is it safe for me to manually replace that script with the one from pull request?

EDIT:
Just did, i only had to replace @@ARTIFACTNAME@@ with jenkins. Seems to be working fine.

No, it has the latest version 2.426.1. I just confirmed from a Debian machine. Your cached local copy of the apt repository index may only have 2.387.1, but the apt Jenkins repository as described at Debian Jenkins Packages is showing the most recent version.

You need to follow the installation instructions that include the command:

apt-get update

No, it is not safe to manually replace any files from the package manager with files that you have modified. Files installed by the package manager should be maintained by the package manager. When you replace or modify a file that was created by the package manager, you bypass the package manager upgrade processes and you configure your system for future upgrade failures.