Jenkins 错误“Java 版本不正确”,适用于 Java11。删除 Java11 并安装 Java8 后,在任何地方都找不到 java

Jenkins 错误“Java 版本不正确”,适用于 Java11。删除 Java11 并安装 Java8 后,在任何地方都找不到 java

我尝试安装支持 Java 11 的最新稳定 Jenkins 版本。因此,在安装 Java 11(JDK)后,我从 Jenkins 收到错误,指出发现了错误的 Java 版本。

因此,卸载了 Java 11 并尝试安装 Java 8。安装 Java 8 时,Jenkins 消息incorrect java version反复出现。因此,我完全删除了 Java 11(JDK)和 Java 8(JDK),并确保 Java 11 和 Java 8 中没有文件夹/usr/bin/usr/lib/jvm当我安装 Java 8 时,系统显示已安装 JDK 8,但我无法在系统中找到任何 Java 版本。为什么?

  1. 如何为 Jenkins 设置 JDK 8 并使其运行?在哪里可以找到 Java 版本?
  2. 如果我需要从头开始安装所有内容,如何从系统中完全删除 Jenkins?或者有什么方法可以将 Linux 重置为以前的状态(在安装 Java 和 Jenkins 之前)
  3. 如何在系统中同时拥有/维护 JDK8 和 JDK11?

答案1

我刚刚遇到了这个问题,实际上它看起来像是/etc/init.d/jenkinsJava 版本测试中的一个问题。我刚刚在这里发布了一个解决方案:https://dorian.fraser-moore.com/works/5054500/ubuntu-and-jenkins-found-an-incorrect-java-version,与那些在谷歌上第一次发现这个问题的人分享如下。

最近更新我的 Ubuntu 20.04.1 LTS 开发服务器后,我的 Jenkins 安装在启动时停止运行。检查后systemctl status jenkins.service返回了以下消息

Nov 13 09:35:43 tattve jenkins[1038744]: Found an incorrect Java version
Nov 13 09:35:43 tattve jenkins[1038744]: Java version found:
Nov 13 09:35:43 tattve jenkins[1038776]: openjdk version "11.0.9.1" 2020-11-04
Nov 13 09:35:43 tattve jenkins[1038776]: OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
Nov 13 09:35:43 tattve jenkins[1038776]: OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Nov 13 09:35:43 tattve jenkins[1038744]: Aborting

这看起来很奇怪,因为 jenkins 支持 Java 11 和 openJDK,事实上我之前已经运行过它了。

深入研究后,我注意到了 init 脚本/etc/init.d/jenkins,其中第 56-60 行使用 SED 将 java -version 命令中的版本提取为数值,但正则表达式有点太宽泛

# Which Java versions can be used to run Jenkins
JAVA_ALLOWED_VERSIONS=( "18" "110" )
# Work out the JAVA version we are working with:
JAVA_VERSION=$($JAVA -version 2>&1 | sed -n ';s/.* version "\(.*\)\.\(.*\)\..*".*/\1\2/p;')

事实证明,最后一行将 JAVA_VERSION 设置为 11.09,这与 JAVA_ALLOWED_VERSION 中的任何内容都不匹配。我可以将 11.09 添加到 JAVA_ALLOWED_VERSIONS 以使其运行,但更好的解决方法似乎是修复该允许的 sed 行。将其更改为:

JAVA_VERSION=$($JAVA -version 2>&1 | sed -n ';s/.* version "\([0-9]*\)\.\([0-9]*\)\..*".*/\1\2/p;')

完成了工作。它可能会帮助其他人。

[尽职调查编辑]

看起来已经有人发了 PR 来修复这个问题:https://github.com/jenkinsci/packaging/pull/198

答案2

Jenkins 所需的 Java 版本

詹金斯的工作完美使用 Ubuntu 提供的openjdk软件包。您甚至可以决定您喜欢哪个 OpenJDK 版本:

# headless JRE is enough for Jenkins 
$ sudo apt install openjdk-8-jre-headless

# or with JAVA 11
$ sudo apt install openjdk-11-jre-headless

在 Ubuntu 中维护多个 Java 版本

这个邮政关于如何维护多个 Java 版本。

安装 Jenkins(作为 jenkins.io 的 Debian 包)

有一些非常简单的文档关于如何安装上游 jenkins Debian 包。

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add
$ sudo bash -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt update
$ sudo apt-get install jenkins

这应该够了吧。

删除 Jenkins

如果您使用基于包的 Jenkins 安装,请使用以下命令删除该包:

$ sudo apt remove jenkins

如果您使用的是来自 Jenkins 站点的 tarball,只需删除安装它的文件夹即可。

答案3

Jenkins 需要安装 Java 8 jdk。使用命令检查你的 Java 版本 $ java -version 如果你的机器上安装了多个 Java,请使用命令 $ sudo update-alternatives --config java 这将提供你机器上的 Java 版本列表。使用命令安装 jenkins $ sudo apt update $ sudo apt install jenkins

要将端口号更改为 9090,请使用 sudo $ sudo vim /etc/default/jenkins 8080 是最常用的端口 找到 8080 并更改为 9090 使用 :wq 作为 Vim 编辑器保存文件 打开浏览器 http://localhost:9090 开始配置 jenkins

答案4

将 Java 从 8 升级到 11 后,我遇到了此错误;因为我已通过切换新的 war 手动升级了 ubuntu 上的 jenkins。因此,我的旧安装保留了/etc/init.d/jenkins包含错误的文件。

对我来说,修复方法很简单,只需运行正确的 apt-get update 即可:

sudo apt-get upgrade jenkins

正确地将所有文件替换为最新版本

相关内容