我尝试安装支持 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 版本。为什么?
- 如何为 Jenkins 设置 JDK 8 并使其运行?在哪里可以找到 Java 版本?
- 如果我需要从头开始安装所有内容,如何从系统中完全删除 Jenkins?或者有什么方法可以将 Linux 重置为以前的状态(在安装 Java 和 Jenkins 之前)
- 如何在系统中同时拥有/维护 JDK8 和 JDK11?
答案1
我刚刚遇到了这个问题,实际上它看起来像是/etc/init.d/jenkins
Java 版本测试中的一个问题。我刚刚在这里发布了一个解决方案: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
正确地将所有文件替换为最新版本