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

如何使用jenv工具管理多个JDK版本

一、jenv到底是干啥的?

简单来说,jenv就是专门用来管理多个Java版本的工具。不管是开发、测试,还是生产环境,只要你需要在同一台机器上用不同的Java版本,它都能帮上大忙。比如说,项目A要求JDK 8,项目B得用JDK 11,有了jenv,就能轻松在这些版本之间切换,再也不用为了版本问题头疼了。

二、jenv的核心功能

(一)管理多个Java版本

  1. 添加Java版本:想把已经安装好的Java版本添加到jenv里,用这个命令就行:
jenv add /path/to/java/home

比如说你下载了JDK 8和JDK 11,安装路径分别是/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk11.0.10.jdk/Contents/Home ,添加的时候就这样写:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk11.0.10.jdk/Contents/Home
  1. 切换Java版本:切换Java版本也很简单,可以全局切换,也能在局部(当前目录)切换。
jenv global 1.8   # 这就把全局的Java版本切换到JDK 8啦
jenv local 11     # 在当前目录下把Java版本切换成JDK 11
  1. 查看已安装版本:要是想看看都安装了哪些Java版本,直接用这个命令:
jenv versions

(二)支持插件扩展

jenv支持插件,通过插件能扩展它的功能。像Maven插件可以管理多个Maven版本,Gradle插件能管理多个Gradle版本,还有export插件可以设置环境变量。启用插件的命令也很简单:

jenv enable-plugin maven
jenv enable-plugin gradle

(三)环境隔离

jenv可以给不同的项目或者目录设置不一样的Java版本,这样就能避免全局环境冲突。比如全局想用JDK 11,就在终端输入:

jenv global 11  

要是某个项目得用JDK 8,在这个项目的目录下运行:

jenv local 1.8  

这时候,当前目录下会生成一个.java-version文件,用来记录这个目录用的Java版本。

(四)自动切换

jenv还有个很贴心的功能,就是自动切换Java版本。当你进入一个包含.java-version文件的目录时,jenv会自动把Java版本切换到文件里指定的版本,是不是很方便?

(五)跨平台支持

不管你用的是macOS、Linux,还是Windows(通过WSL也行),jenv都能在这些系统上使用,适配各种开发环境。

(六)与其他工具集成

jenv能和Maven、Gradle、Spring Boot这些开发工具无缝集成,保证这些工具用的都是正确的Java版本,避免因为版本不一致导致的各种问题。

三、jenv的安装和配置

(一)安装jenv

在macOS上安装jenv超简单,用Homebrew就行:

brew install jenv

(二)初始化jenv

安装好之后,还得把jenv添加到shell配置文件里。如果你用的是zsh,就在~/.zshrc文件里添加这两行:

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

添加完之后,再执行下面这条命令让配置生效:

source ~/.zshrc

要是用bash的话,就把配置添加到~/.bash_profile文件里,操作类似。

四、jenv常用命令汇总

命令说明
jenv versions查看已经安装的Java版本
jenv global <version>设置全局的Java版本
jenv local <version>设置当前目录的Java版本
jenv shell <version>设置当前shell会话的Java版本
jenv add /path/to/java/home把Java版本添加到jenv
jenv enable-plugin <plugin>启用插件,比如mavengradle
jenv doctor检查jenv的配置正不正确

五、jenv适用场景

  1. 要是你同时开发好几个项目,每个项目要求的Java版本还不一样,那jenv绝对是你的救星。
  2. 做不同Java版本兼容性测试的时候,用jenv能快速切换版本,效率直接拉满。
  3. 担心全局Java版本冲突?用jenv进行环境隔离,完美解决这个问题。
  4. 想快速切换开发环境?有了jenv,一键切换Java版本。

六、jenv与其他工具对比

工具功能特点
jenv管理Java版本轻量级,还支持插件扩展,用起来很灵活
SDKMAN能管理Java、Maven、Gradle等多种工具功能更强大,适合管理多种开发工具的版本
Homebrew主要用来安装和管理软件包安装Java挺方便,但没办法进行多版本切换

总的来说,jenv在管理Java版本这块表现很出色,简单又好用。要是你还在被Java版本管理的问题困扰,不妨试试jenv!要是在使用过程中有啥问题,欢迎在评论区留言,咱们一起交流解决。

相关文章:

如何使用jenv工具管理多个JDK版本

一、jenv到底是干啥的&#xff1f; 简单来说&#xff0c;jenv就是专门用来管理多个Java版本的工具。不管是开发、测试&#xff0c;还是生产环境&#xff0c;只要你需要在同一台机器上用不同的Java版本&#xff0c;它都能帮上大忙。比如说&#xff0c;项目A要求JDK 8&#xff0…...

macOS 使用 iconv 转化文件编码

文章目录 使用方式支持的编码类型iconv 更多用法 使用方式 iconv -f GB2312 -t UTF-8 分治算法.txt > 分治算法2.txt 支持的编码类型 可以使用 下面命令 查看编码类型 iconv -lPS : ISO-8859 有很多种分支&#xff0c;iconv 支持 ISO-8859-1、ISO-8859-10&#xff0c;但…...

常考计算机操作系统面试习题(二)(上)

目录 1. 描述分段内存管理机制 2. 解释文件分配磁盘块链接分配方法的优点和缺点 3. 进程的状态有哪些&#xff1f; 4. 一个进程的空间包括哪些部分&#xff1f; 5. 进程和程序的区别&#xff1f; 6. CPU调度可能发生在当一个进程&#xff1a; 7. 哪些条件同时出现&#…...

Mac | Excel | 列数改为和行数一样用数字表示

2. 3....

SLAM十四讲【二】三维空间刚体运动

SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【一】基本概念 SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【三】李群与李代数 SLAM十四讲【四】相机与图像 SLAM十四讲【五】线性优化 SLAM十四讲【六】视觉里程计 SLAM十四讲【七】回环检测 SLAM十四讲【八】建图 文章目录 S…...

Java对象的hashcode

在 Java 中&#xff0c;hashcode 和 equals 方法是 Object 类的两个重要方法&#xff0c;它们在处理对象比较和哈希集合&#xff08;如 HashMap、HashSet&#xff09;时起着关键作用。对于equals大部分Java程序员都不陌生&#xff0c;它通常是比较两个对象的内容(值)是否相等(双…...

华为ipd流程华为流程体系管理华为数字化转型流程数字化管理解决方案介绍81页精品PPT

华为流程体系最佳实践主要包括构建完善的流程框架&#xff0c;明确各层级流程要素与职责&#xff0c;梳理涵盖研发、采购、营销、服务、资产管理等多领域的流程&#xff0c;通过梳理业务场景和核心能力搭建差异化流程框架&#xff0c;采用自上而下与自下而上相结合的建模方法&a…...

人工智能 - 通用 AI Agent 之 LangManus、Manus、OpenManus 和 OWL 技术选型

一、核心项目概览 1. Manus(闭源通用 AI Agent) 定位 :全球首个全流程自动化通用 AI Agent,GAIA 基准测试 SOTA 水平。核心能力 : 全流程自动化 :从任务规划(如撰写报告)到执行(代码生成、表格制作)的端到端处理。智能纠错机制 :基于沙箱环境的实时错误反思与调整…...

数据库基础知识

目录 一、什么是数据库&#xff1f; 二、基本使用方法 &#xff08;1&#xff09;启动服务器进程 &#xff08;2&#xff09;连接服务器 &#xff08;3&#xff09;基本sql语句 三、MySQL架构 四、SQL语句分类 五、存储引擎是什么 一、什么是数据库&#xff1f; 数据库…...

嵌入式硬件工程师从小白到入门-原理图(三)

原理图绘制从小白到入门&#xff1a;知识点速通与注意事项 一、原理图绘制基础概念 什么是原理图&#xff1f; 原理图&#xff08;Schematic&#xff09;是电子电路的图形化表示&#xff0c;展示元器件之间的电气连接关系&#xff0c;是硬件设计的蓝图。 核心元素 元器件符号&…...

国科大——英语A——机考测试题

前沿&#xff1a; 此文记录了国科大所提供的一套机考试卷。 PART I VOCABULARY &#xff08;20道&#xff0c;十分&#xff09; Directions&#xff1a;Choose the best word or phrase from the choices A, B, C, or D to complete the following sentences. 1.For most pe…...

2025-03-22 学习记录--C/C++-PTA 习题4-11 兔子繁衍问题

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-11 兔子繁衍问题 一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每…...

HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述

这个是上一年的项目&#xff0c;之前弄得不怎么完整&#xff0c;只有一个openmv的&#xff0c;所以openmv自己去我主页找&#xff0c;这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是&#xff1a;openmv识别到图形和数…...

Deepseek训练成AI图片生成机器人

目录 内容安全层 语义理解层 提示词工程层 图像生成层 交付系统 训练好的指令(复制就可以) 内容安全层 理论支撑:基于深度语义理解的混合过滤系统 敏感词检测:采用BERT+CRF混合模型,建立三级敏感词库(显性/隐性/文化禁忌),通过注意力机制捕捉上下文关联风险 伦…...

在线问卷调查|在线问卷调查系统|基于Spring Boot的在线问卷调查系统的设计与实现(源码+数据库+文档)

在线问卷调查 目录 基于Spring Boot的在线问卷调查系统 一、前言 二、系统设计 三、系统功能设计 1.1 问卷管理 1.2 问卷调查管理 1.3 题目管理 2.1 问卷列表 2.2 问卷调查 2.3 问卷调查记录 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题…...

计算机网络的软件、硬件和组成

&#xff11;.计算机网络的组成 计算机网络是一个十分复杂的系统&#xff0c;在逻辑上可以分为完成数据通信的通信子网和进行数据处理的资源子网两个部分。 通信子网 通信子网提供网络通信的功能&#xff0c;可以完成网络主机之间的数据传输、交换、通信控制和信号变换等通信…...

Cursor的五种高级用法

文章目录 代码编写写作编辑自动生成工作流搞定开源项目数据处理参考 代码编写 Cursor 最基本的功能是帮助你编写代码。只需使用 Composer&#xff08;CtrlI&#xff09;&#xff0c;描述你想要实现的功能&#xff0c;Cursor 就能生成相应的代码。不满意&#xff1f;直接告诉它…...

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…...

三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频

前言 在多媒体开发中&#xff0c;从视频中提取音频是一个常见需求。比如&#xff0c;你可能需要分离背景音乐来单独欣赏&#xff0c;或者提取对白用于语音分析&#xff0c;甚至为视频生成字幕。无论目的如何&#xff0c;音频提取都是多媒体处理中的基础操作。 传统上&#xf…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例9,TableView15_09带排序的导出表格示例

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

Qt+FFmpeg+SDL2播放进度显示及定位播放

参考链接&#xff1a; https://avmedia.0voice.com/?id59815 https://www.cnblogs.com/xdao/archive/2013/06/13/ffmpeg_tutor07.html https://blog.csdn.net/qq_38204686/article/details/139888438 https://blog.csdn.net/qq_38694388/article/details/120684650 https:/…...

【C语言】深入理解指针(二):从数组到二维数组的指针魔法

前言 在C语言中&#xff0c;指针一直是一个神秘而强大的存在。它不仅可以帮助我们高效地操作内存&#xff0c;还能让代码更加灵活和高效。今天&#xff0c;我们就来深入探讨指针的多种用法&#xff0c;从数组到二维数组&#xff0c;一步步揭开指针的神秘面纱。 一、数组名的指…...

调用链路传递隐式参数

在不修改方法签名与参数定义的情况下&#xff0c;可以通过 RpcContext 上的 setAttachment 和 getAttachment 在服务消费方和提供方之间进行参数的隐式传递。 隐式参数传递支持以下两个方向&#xff1a; 从消费方到提供方&#xff0c;也就是在请求发起时&#xff0c;在方法参数…...

鸿蒙 元服务摘要

元服务&#xff08;原名原子化服务&#xff09;&#xff0c;是HarmonyOS提供的一种面向未来的服务提供方式&#xff0c;是有独立入口的&#xff08;用户可通过点击方式直接触发&#xff09;、免安装的&#xff08;无需显式安装&#xff0c;由系统程序框架后台安装后即可使用&am…...

Browser Use Web UI 本地部署完全指南:从入门到精通

文章目录 引言一、项目概述1.1 核心功能1.2 技术特点 二、环境准备2.1 系统要求2.2 必要工具 三、详细部署步骤3.1 获取项目代码3.2 配置 Python 环境3.3 安装项目依赖3.4 环境配置3.5 启动应用 四、DeepSeek-V1 模型配置4.1 基础配置 五、执行Browser Use六、故障排查指南6.1 …...

Python元组

# coding: utf-8 print(-----------元组:不可变-----------)元组诗Python中内置的不可变序列 元素与元素之间使用英文的逗号分隔 元组中只有一个元素的时候&#xff0c;逗号也不能省略 元组的创建方式&#xff1a; (1)使用()直接创建元组 元组名 (element1,element2,element3,…...

物理环境与安全

物理安全的重要性 信息系统安全战略的一个重要组成部分物理安全面临问题 环境风险不确定性人类活动的不可预知性 典型的物理安全问题 自然灾害环境因素设备安全、介质安全、传输安全 场地选择 区域&#xff1a;避开自然灾害高发区环境&#xff1a;原理可能的危险因素抗震&…...

智慧医疗解决方案

1. 智慧医疗的兴起 智慧医疗作为智慧城市的关键部分&#xff0c;正逐渐成为医疗卫生体制改革的焦点。随着移动医疗和精准医疗的发展&#xff0c;智慧医疗解决方案变得触手可及&#xff0c;依托政策驱动和社会需求&#xff0c;致力于实现“以人为本、信息惠民”的目标。 2. 政…...

MySQL -- 复合查询

数据库的查询是数据库使用中比较重要的环节&#xff0c;前面的基础查询比较简单&#xff0c;不做介绍&#xff0c;可自行查阅。本文主要介绍复合查询&#xff0c;并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表&#xff0c;可以自行下载&#xff0c;也可以自己创建…...

【最后203篇系列】022 用Deepseek14b提取新闻事件

这算是之前一直想做的一件事&#xff0c;趁周末赶快做了。 业务意义&#xff1a;现实中有大量的舆情&#xff0c;这对我们的决策会有比较重要的作用 技术依赖&#xff1a; 1 模型基础能力2 消息队列3 异步获取消息4 时间序列库 1 模型基础能力 大模型发展到现在&#xff0…...

关于网络的一点知识(持续更新)

1、IP地址和子网掩码、端口号&#xff1a; IP地址是设备在网络上的地址&#xff0c;相当于一栋房子的门牌号。子网掩码相当于房子所在的街道。同一条街道的房子间是通过街道直通的&#xff0c;主人可以互相拜访。 举个例子&#xff0c;如下图所示。 说明&#xff1a;将两台设…...

2025年01月02日浙江鼎永前端面试

目录 webpack 和 vite 区别react fiber 架构vue diff 算法react diff 算法hooks 源码垂直水平布局项目介绍单点登录大文件上传微前端 1. webpack 和 vite 区别 Webpack 和 Vite 是两种不同的前端构建工具&#xff0c;它们在设计理念、性能表现和使用场景上存在显著差异。以下…...

Redis全面学习指南

要全面掌握 Redis&#xff0c;需要系统化学习以下核心知识体系&#xff0c;涵盖基础到高级的各个方面&#xff0c;并理解其内部原理和实际应用场景&#xff1a; 一、Redis 核心特性与基础 基本概念与架构 定义&#xff1a;内存数据库&#xff0c;支持键值存储、缓存、消息队列等…...

python3最新版下载及python 3.13.1安装教程(附安装包)

文章目录 前言一、python 3.13.1下载二、python 3.13.1安装步骤1.准备安装文件2.启动安装程序3.选择安装方式4.等待安装完成5.完成安装 前言 在当今数字化时代&#xff0c;Python 以其简洁易读的语法和丰富的库资源&#xff0c;成为众多开发者喜爱的编程语言。Python 3.13.1 的…...

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案

智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户​核心痛点实现功能与用户价值 &#xff0c;Web平台实现MCU多协议&#xff0c;H265/H264等不同编码监控&#xff0c;直播&#xff0c;会议&#xff0c;调度资源统一融合在一套界…...

css基础-display 常用布局

CSS display 属性详解 属性设置元素是否被视为块级或行级盒子以及用于子元素的布局&#xff0c;例如流式布局、网格布局或弹性布局。 一、基础显示模式 1. block 作用&#xff1a; 元素独占一行可设置宽高和内外边距默认宽度撑满父容器 应用场景&#xff1a; 布局容器&a…...

基于linux平台的C语言入门教程(7)类型转换

文章目录 1. 什么是类型转换&#xff1f;2. 隐式类型转换隐式类型转换的规则&#xff1a; 3. 显式类型转换显式类型转换的语法&#xff1a; 4. 示例代码代码解析&#xff1a;输出结果&#xff1a; 5. 常见问题问题 1&#xff1a;隐式类型转换会导致数据丢失吗&#xff1f;问题 …...

前端Wind CSS面试题及参考答案

目录 标准盒模型与 IE 盒模型的区别是什么?如何通过 box-sizing 属性切换这两种盒模型? 如何计算一个元素在标准盒模型下的总宽度(包含 margin、padding、border)? 父元素高度塌陷的原因是什么?请列举至少 3 种清除浮动的方法。 方法一:使用 clear 属性 方法二:使用…...

ROS melodic 安装 python3 cv_bridge

有时候&#xff0c;我们需要处理这些兼容性问题。此处列举我的过程&#xff0c;以供参考 mkdir -p my_ws_py39/src cd my_ws_py39 catkin_make_isolated-DPYTHON_EXECUTABLE/usr/bin/python3 \-DPYTHON_INCLUDE_DIR/usr/include/python3.8 \-DPYTHON_LIBRARY/usr/lib/x86_64-l…...

农用车一键启动工作原理

移动管家农用车一键启动的工作原理与普通汽车类似&#xff0c;主要依赖于无线射频识别技术&#xff08;RFID&#xff09;。以下是具体的工作步骤和原理&#xff1a; 智能钥匙识别&#xff1a; 车主携带智能钥匙靠近车辆时&#xff0c;钥匙通过发射射频信号与车辆进行交互。车辆…...

Swift 并发任务的协作式取消

在 Swift 并发&#xff08;Swift Concurrency&#xff09;中&#xff0c;任务&#xff08;Task&#xff09;不会被强行终止&#xff0c;而是采用**协作式取消&#xff08;cooperative cancellation&#xff09;**机制。这意味着任务会被标记为“已取消”&#xff0c;但是否真正…...

设计和布局硬件电路是嵌入式系统开发的重要环节

设计和布局硬件电路是嵌入式系统开发的重要环节&#xff0c;涉及从需求分析到原理图设计、PCB&#xff08;印刷电路板&#xff09;布局以及最终的硬件调试。以下是完整的流程和技术要点&#xff1a; 1. 硬件电路设计的基本流程 1.1 需求分析 明确功能需求&#xff1a;确定系统…...

防火墙虚拟系统实验

配置 [r1]interface GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r1]interface LoopBack 0 [r1-LoopBack0]ip address 100.1.1.1 24[fw]interface GigabitEthernet 0/0/0 [fw-GigabitEthernet0/0/0]service-manage all permit [fw]interfac…...

机器学习——KNN数据集划分

一、主要函数 sklearn.datasets.my_train_test_split() 该函数为Scikit-learn 中用于将数据集划分为训练集和测试集的函数&#xff0c;适用于机器学习模型的训练和验证。以下是详细解释&#xff1a; ​1、函数签名 train_test_split(*arrays, # 输入的数据…...

C++基础系列【27】Raw String Literal

博主介绍&#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章&#xff0c;首发gzh&#xff0c;见文末&#x1f447;&#x1f…...

PyTorch核心基础知识点

PyTorch核心基础知识点&#xff0c;结合最新特性与工业级实践&#xff0c;按优先级和逻辑关系分层解析&#xff1a; ▍ 核心基石&#xff1a;张量编程&#xff08;Tensor Programming&#xff09; 1. 张量创建&#xff08;8种生产级初始化&#xff09; # 设备自动选择&#x…...

Springboot实现使用断点续传优化同步导入Excel

springboot实现使用断点续传优化同步导入Excel 需求前言断点续传前端实现后端实现完结撒花&#xff0c;如有需要收藏的看官&#xff0c;顺便也用发财的小手点点赞哈&#xff0c;如有错漏&#xff0c;也欢迎各位在评论区评论&#xff01; 需求前言 在跨境电商系统中&#xff0c…...

1、正点原子ZYNQ最小系统--GPIO之MIO控制LED笔记

1、ZYNQ PS中的外设通过MIO连接到PS端引脚&#xff1b;通过EMIO连接到PL端引脚。 2、Zynq-7000有54个MIO&#xff0c;有64个EMIO。 3、GPIO分为4个Bank&#xff0c;其中Bank0和Bank1连接到MIO;Bank2和Bank3连接到EMIO。 4、Bank1--22bit&#xff1b;Bank0--32bit&#xff1b…...

基于STM32进行FFT滤波

文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话 一、前言背景 STM32 对 AD 采样信号进行快速傅里叶变换&#xff08;FFT&#xff09;&#xff0c;以获取其频谱…...

ISCA Archive 的 关于 dysarthria 的所有文章摘要(1996~2024)

ISCA Archive 的 关于 dysarthria 的所有文章摘要&#xff08;1996~2024&#xff09; 构音障碍&#xff08;Dysarthria&#xff09;研究全景总结&#xff08;1996–2024&#xff09; 所有文章摘要&#xff08;1996~2024&#xff09; ISCA Archive 的 关于 dysarthria 的所有文…...