当前位置: 首页 > news >正文

ubuntu22.04 安装jdk8,jdk11,jdk17,jdk21 并且便于切换

您已经创建了一个非常实用的shell函数 setJavaHome 来切换不同版本的JDK环境。这个函数定义了如何根据传入的参数来更改 JAVA_HOME 环境变量,并更新 PATH 环境变量以包含新的 JAVA_HOME 路径。

要在Ubuntu 22.04上安装多个JDK版本并使用这个函数来切换它们,您需要按照以下步骤操作:

1. 安装JDK

首先,确保您已经安装了所需的JDK版本。您可以使用OpenJDK,也可以选择Oracle JDK。以下是使用OpenJDK作为例子的安装命令:

sudo apt update
sudo apt install openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk

对于JDK 21,如果它在Ubuntu 22.04的官方仓库中不可用,您可能需要从其他来源手动下载并安装。

2. 配置 ~/.bashrc

~/.bashrc 文件中添加您已经定义的 setJavaHome 函数。使用您喜欢的文本编辑器打开 ~/.bashrc 文件:

nano ~/.bashrc
# Java 环境切换
setJavaHome() {case $1 in8)export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202;;11)export JAVA_HOME=/usr/lib/jvm/jdk-11.0.21;;17)export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9;;21)export JAVA_HOME=/usr/lib/jvm/jdk-21.0.1;;*)echo "Unsupported Java version: $1"return 1esacexport PATH=$JAVA_HOME/bin:$PATHecho "JAVA_HOME set to $JAVA_HOME"java -version
}

然后将 setJavaHome 函数的定义粘贴进去,并保存退出编辑器。

3. 应用更改

~/.bashrc 中的更改生效:

source ~/.bashrc

4. 使用函数切换JDK版本

现在,您可以通过调用 setJavaHome 函数来切换JDK版本。例如,运行 setJavaHome 11 会将当前会话的JDK切换为11。

注意事项

  • 确保JDK的安装路径与 setJavaHome 函数中定义的路径相匹配。
  • setJavaHome 函数仅在当前的shell会话中有效。每次新开一个终端时,您需要再次运行它来设置所需的JDK版本。
  • 为了更持久地设置JDK版本,您可以在需要的时候运行 setJavaHome 命令,或者将特定的JDK版本设置为默认版本。

相关文章:

  • Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
  • 继续声明 | 连声明都抄,谁抄袭谁,一目了然,现在竟然恬不知耻的反咬一口。
  • c语言实现得到某数的某方(n^k)的值
  • IntelliJ IDEA Apache Dubbo,IDEA 官方插件正式发布!
  • C语言之整型提升
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • mysql使用全文索引+ngram全文解析器进行全文检索
  • 基于SpringBoot的中小型企业质量管理
  • 医院安全(不良)事件报告系统源码 支持二次开发、支持源码交付
  • Postman接口测试工具使用
  • STL——查找算法
  • kubeadm来搭建k8s集群。
  • C++构建简单静态库实例(cmakelist)
  • 【Yii2】数据库查询方法总结
  • 学习体系结构 - AArch64内存管理
  • [case10]使用RSQL实现端到端的动态查询
  • Angular 4.x 动态创建组件
  • Centos6.8 使用rpm安装mysql5.7
  • co.js - 让异步代码同步化
  • golang 发送GET和POST示例
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PHP面试之三:MySQL数据库
  • React+TypeScript入门
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vuex 学习笔记 01
  • 阿里云应用高可用服务公测发布
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聚类分析——Kmeans
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 普通函数和构造函数的区别
  • 前端存储 - localStorage
  • 前端临床手札——文件上传
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何解决微信端直接跳WAP端
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 微信小程序实战练习(仿五洲到家微信版)
  • 正则表达式小结
  • scrapy中间件源码分析及常用中间件大全
  • #HarmonyOS:Web组件的使用
  • #ifdef 的技巧用法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (1)bark-ml
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (JS基础)String 类型
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)认识微服务
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core 控制台应用程序读取配置文件app.config