多jdk版本环境下,jenkins系统设置需指定JAVA_HOME环境变量

一、背景

由于不同项目对jdk版本的要求不同,有些是要求jdk11,有些只需要jdk8即可。
而linux机器上安装jdk的方式又多种多样,最后导致jenkins打包到底使用的是哪个jdk,比较混乱。

1、java在哪

在这里插入图片描述

> whereis java
java: /usr/bin/java /opt/jdk-11.0.17/bin/java /opt/jdk1.8.0_351/bin/java /usr/share/man/man1/java.1

可以看到这里有三个java版本:

  • /usr/bin/java (原先安装的jdk)
  • /opt/jdk-11.0.17/bin/java
  • /opt/jdk1.8.0_351/bin/java (新安装的jdk,期望使用该版本)

这里的安装方式有两种:

  • update-alternatives 多版本管理软件(第一个)
  • 手动安装(后两者)

2、什么是update-alternatives

在 CentOS 和许多其他 Linux 发行版中,/etc/alternatives 目录是用来管理软件的多个版本的。这是一个系统级别的工具,用于在安装了多个版本的同一软件时选择默认版本。

对于 Java,当你安装不同版本的 JDK 时,每个版本的二进制文件(如 java, javac, javadoc 等)都会被放置在 /etc/alternatives 目录下,并且会创建指向这些二进制文件的符号链接(symlink)。这些符号链接位于 /usr/bin 目录下,以便用户可以通过标准的命令行接口访问这些工具。

见/usr/bin目录下:
在这里插入图片描述

例如,如果你运行 java -version,系统实际上是在运行 /etc/alternatives/java 指向的版本。/etc/alternatives 目录中的每个 Java 相关文件都是一个脚本,它检查 JAVA_HOME 环境变量,如果设置了,就使用它;如果没有设置,它会使用 update-alternatives 系统配置的默认值。

在这里插入图片描述

> update-alternatives --config javaThere is 1 program that provides 'java'.Selection    Command
-----------------------------------------------
*+ 1           /usr/java/jdk1.8.0_181-amd64/jre/bin/javaEnter to keep the current selection[+], or type selection number:

3、手动安装jdk

解压缩至某个目录,然后配置jdk环境变量。
在这里插入图片描述

export JAVA_HOME=/opt/jdk1.8.0_351
export PATH=$PATH:$JAVA_HOME/bin

二、到底用的是哪个jdk

1、maven

当你执行mvn -v命令,看到它使用的jdk是我们期望的/opt/jdk1.8.0_351/bin/java版本。

在这里插入图片描述

> mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /opt/maven
Java version: 1.8.0_351, vendor: Oracle Corporation, runtime: /opt/jdk1.8.0_351/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-642.el6.x86_64", arch: "amd64", family: "unix"

所以,在jenkins机器上,手动mvn package打包,没问题。

但是,当你执行java -version的时候,发现并不是/opt/jdk1.8.0_351/bin/java
在这里插入图片描述

> java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

说明虽然设置了JAVA_HOME环境变量,但是/usr/bin/java的优先级更高。

这一点,我们从whereis java的顺序也可以看出。

2、jenkins

在没有设置JAVA_HOME的情况下,默认使用的jdk是/usr/java/jdk1.8.0_181-amd64/jre/bin/java

所以第一次打包报错:

在这里插入图片描述

三、jenkins系统设置

指定JAVA_HOME环境变量,明确jenkins在众多jdk中选择哪个jdk

在这里插入图片描述
在这里插入图片描述

  • JAVA_HOME : /opt/jdk1.8.0_351
    在这里插入图片描述

再次打包,jenkins就能选择出你所需的jdk版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/449982.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试人生 | 双非院校,2年工作经验年薪近20万

本人本科毕业于双非院校,大学毕业之后就开始从事软件测试工作,有两年多的工作经验,工作当中学习的测试技能较少,比较多重复的工作内容,主要对软件进行功能测试、简单的接口测试及专项测试,自学的测试知识零…

【STL】模拟实现list

目录 list需要实现的接口 结点类的创建 迭代器类的实现 构造函数 运算符的重载 --运算符的重载 !运算符重载和运算符重载 operator* operator-> list的模拟实现 构造函数 拷贝构造函数 赋值运算符重载函数 析构函数 迭代器相关函数 begin和end front和back …

【超详细】TCP协议

TCP(Transmission Control Protocol 传输控制协议) 传输层协议有连接可靠传输面向字节流 为什么TCP是传输控制协议呢? 我们以前所看到的write接口,都是把用户级缓冲区的数据拷贝到发送缓冲区中,然后数据就由TCP自主决定了,所以…

crashrpt3 开源项目的Vs 2022 C++20及其以上的编译

1. 首先从github 下载源代码 crashrpt3 2. 用CMake Gui 编译成vs studio 工程文件 2.1 点击 config 按钮 2.2 依次点击 Generate 按钮、Open Project 按钮.之后vs 2022 会打开编译好的sln工程文件 3.全选解决方案里面的所有项目,设置C语言标准,我这里设置是最新C,即启用的是…

【文档智能】文本文字识别、公式识别、表格文字识别核心算法及思路及实践-DBNet、CRNN、TrOCR

前言 OCR技术作为文档智能解析链路中的核心组件之一,贯穿整个技术链路,包括:文字识别、表格文字识别、公式识别,参看下面这张架构图: 前期介绍了很多关于文档智能解析相关核心技术及思路,本着连载的目的&a…

IT监控平台可视化:多维度展示助力运维效率提升

在信息化时代,IT设备的稳定性与业务的连续性紧密相连,任何细微的故障都可能给企业带来巨大的损失。因此,IT运维团队面临着前所未有的挑战,他们需要迅速、准确地识别和解决问题,以确保业务的平稳运行。而IT监控平台的可…

应届生毕业找不到工作转行IT需要做好哪些准备呢?

前言 相信这是很多即将毕业的应届生们都非常关心的问题。在这里,我们将站在一个应届生毕业且对IT行业感兴趣的角度,来探讨一下这个问题。 首先,我们先来了解一下什么是应届生。应届生是指在学校毕业之后,能够在当年或者下一年度…

AIGC验证码如何对抗,AIGC VS AIGC

AI类型的验证码,当然使用AI对对抗,使用大量的样本叠加训练,我的生成如下: 如果可以生词大量词汇,那么准确率必然上升,有办法的可以讨论

大模型系列:RAG技术深度解析

文末有福利! RAG 是2023年最流行的基于 LLM 的应用系统架构。有许多产品几乎完全建立在 RAG 之上,覆盖了结合网络搜索引擎和 LLM 的问答服务,到成千上万个数据聊天的应用程序。很多人将RAG和Agent 作为大模型应用的两种主流架构,…

CTFHUB技能树之HTTP协议——响应包源代码

开启靶场,打开链接: 是个贪吃蛇小游戏,看不出来有什么特别的地方 用burp抓包看看情况: 嗯?点击“开始”没有抓取到报文,先看看网页源代码是什么情况 居然直接给出flag了,不知道这题的意义何在 …

pip离线下载和安装第三方库

pip离线下载和安装第三方库 离线下载离线安装 离线下载 下载依赖库(.whl文件),比如下载polars库,并指定重清华源下载,会自动下载依赖的库,并保存到当前目录中,下载命令如下: # 下载…

Intel 新独显 Arc Battlemage 或于10月29日揭晓

原文转载修改自(更多互联网新闻/搞机小知识): Arc Battlemage或于10月29日揭晓 英特尔入局独显市场也好几年了,虽然开局声势和跑分都挺猛,但市场表现不会说谎,上季度趋近于0的市场份额就是答案……不过&am…

字符串及正则表达式

目录 字符串 字符串常用方法: 格格式化字符串的三种方式: 格式化字符串的详细格式: 字符串的编码: 字符串的解码: 数据的验证: 字符串拼接的几种方式: 字符串去重: 正则表达…

notepad++中实现代码整体缩进和退格

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:乡下小哥编程。回复 Java全套视频教程 或 前端全套视频教…

【网易云音乐】--源代码分享

最近写了一个网易云音乐的音乐实现部分,是通过JavaScript和jQuery实现的,具体效果大家可以参照下面的视频 源代码分享 - git地址: 网易云音乐源代码 下面将着重讲解一下音乐实现部分 视频有点模糊,不好意思,在b站上添加视频的时候…

CSS进阶-布局(一)

1、文本溢出 <style>.d1 {width: 400px;height: 300px;background-color: antiquewhite;/* 超出部分色设置为可见&#xff0c;默认方式 *//* overflow: visible; *//* 超出部分使用滚动条 *//* overflow: scroll; *//* 如果内容未超出元素则正常显示&#xff0c;超出元素…

免费企业邮箱哪个好:全面对比与推荐烽火!

免费企业邮箱哪个好用&#xff1f;推荐的免费企业邮箱有哪些&#xff1f; 面对市场上众多的免费企业邮箱服务&#xff0c;企业该如何选择&#xff1f;烽火将深入探讨免费企业邮箱哪个好这一问题&#xff0c;通过全面对比与推荐&#xff0c;帮助企业找到最适合自己的邮箱服务。…

OpenCV高级图形用户界面(15)注册一个回调函数来处理鼠标事件的函数setMouseCallback()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为指定的窗口设置鼠标处理器。 setMouseCallback 是 OpenCV 中的一个功能&#xff0c;允许开发者注册一个回调函数来处理鼠标事件。当用户在窗口…

【前端】如何制作一个自己的网页(6)

接上文 网络中的图片 我们也可以在百度等网站搜索自己喜欢的图片。 此时对图片点击右键&#xff0c;选择【复制图片地址】&#xff0c;即可获得该图片的网络地址。 其实在HTML中&#xff0c;除了图片以外&#xff0c;我们还可以利用地址找到另一个网页。 如右图所示&#…

【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…