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

use*_*425 7 openjdk jenkins 18.04

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

于是卸载了 Java 11 并尝试安装 Java 8。在安装 Java 8 时,Jenkins 消息incorrect java version反复出现。所以,我完全删除这两个Java的11(JDK)和Java 8(JDK),并确保没有文件夹是否有/usr/bin/usr/lib/jvm我安装的Java 8系统说安装了JDK 8,但我不是能找到为Java 11和java 8.我系统中的任何 Java 版本。为什么?

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

小智 29

我刚刚遇到这个问题,它实际上看起来像/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
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为 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;')
Run Code Online (Sandbox Code Playgroud)

事实证明,最后一行是将 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;')
Run Code Online (Sandbox Code Playgroud)

做了工作。它可能会帮助别人。

[尽职调查编辑]

看起来有人已经为修复做了一个 PR:https : //github.com/jenkinsci/packaging/pull/198

  • 这正是我服务器上的问题。它确实对我有帮助:) 谢谢。 (4认同)

Sim*_*ler 1

Jenkins 需要 java 版本

Jenkins与 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
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

这应该够了吧。

删除詹金斯

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

$ sudo apt remove jenkins
Run Code Online (Sandbox Code Playgroud)

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