如何优雅的切换环境变量(jdk+nodejs)

大家好,我是老 J

最近帮客户在做一个新的项目,客户要求新项目使用jdk17,毕竟现在jdk已经更新到jdk21了,再使用jdk8有点说不过去了,"Java8新特性"也成为过去时。。但是我平时还需要维护老项目,有的项目使用的是jdk8,还有的项目使用的是jdk11,所以平时开发的时候就需要频繁的切换jdk版本,非常麻烦!

那么有没有办法能够快速切换jdk环境呢?接下来我分享一个快速切换jdk环境的方法,顺便介绍一下怎么快速切换nodejs环境(nodejs有现成的版本管理工具,比较简单)。

jdk版本切换

首先需要我们的电脑有多个jdk版本(这里以Windows版本为例),jdk下载网址:

www.oracle.com/java/techno...

下载完成之后双击安装(一直下一步即可,这里略过)

完成安装之后我的电脑上就有了三个jdk版本:jdk(jdk8)、jdk11、jdk17

正常这个时候如果我们需要切换jdk版本需要修改系统的环境变量。步骤如下:

第一步,点击此电脑->属性->高级系统设置->环境变量,添加JAVA_HOME变量为jdk的路径如下图。

第二步,点击编辑PATH变量,添加 %JAVA_HOME%\bin 并且将其移动到最上方,注意这里一定要移动到最上方,因为jdk8向高版本切换之后会自动生成一个环境变量(不可见),这样导致我们切换回jdk8之后系统默认读取的版本还是高版本的,把 %JAVA_HOME%\bin移动到最上方之后每次系统读取就会优先读取到它!如下图。

如果我们需要切换jdk的时候只需要修改JAVA_HOME的值即可,如下图。

接下来重点来了,怎么把这一套流程变得更加优雅呢?写脚本!

写一个自动化切换jdk版本的脚本。这个脚本需要输入jdk的版本号,然后自动切换jdk版本,好了,需求有了,我的脚本是这么写的,大家可以直接复制:

bash 复制代码
@echo off
cls
echo ------------------------------------------------
echo 当前Java版本为:
java -version
echo ------------------------------------------------
echo 输入要使用的java版本对应的选项:
echo 选项   含义
echo 8      切换环境为JDK8
echo 11     切换环境为JDK11
echo 17     切换环境为JDK17
echo ------------------------------------------------
set /P choose=请输入选择:
IF "%choose%"=="8" (
    setx JAVA_HOME "D:\java\jdk" /M
    echo 已经修改为JDK8
) ELSE IF "%choose%"=="11" (
    setx JAVA_HOME "D:\java\jdk11" /M
    echo 已经修改为JDK11
) ELSE IF "%choose%"=="17" (
    setx JAVA_HOME "D:\java\jdk17" /M
    echo 已经修改为JDK17
) ELSE (
    echo 输入错误!
)
pause

这个脚本的首先输出当前系统的jdk版本,然后根据输入的版本号来匹配需要切换的版本,大家可以替换为自己的系统jdk路径,其中 /M 为修改系统环境变量。将这文本复制一个TXT文件中,然后修改后缀为 .bat,如图。

最后我们来测试一下脚本的功能:

首先查看系统当前的jdk版本。

然后右键脚本->管理员方式运行

输入版本号11点击回车我们可以看到jdk已经切换成功了!

验证一下:

至此,jdk一键切换就完成了!

nodejs版本切换

好了,介绍完jdk版本切换,nodejs怎么优雅的切换呢?这个就简单多了,因为nodejs有版本管理工具------nvm(Node Version Manager),接下来介绍nvm怎么安装使用。

nvm的下载地址如下:

github.com/coreybutler...

下载完成之后点击安装到合适的位置,一直点击next完成安装即可。

那么怎么切换nodejs版本呢?非常简单,下面是一些简单的指令:

xml 复制代码
安装特定版本的Node.js:nvm install <version>
切换到特定版本的Node.js:nvm use <version>
列出所有已安装的Node.js版本:nvm ls

例如我可以查看电脑现在的nodejs版本并切换。如下图。

我还可以安装别的版本并切换,如图。

怎么样,是不是比jdk切换简单多了!

更多文章干货,推荐公众号【程序员老J】

相关推荐
吾日三省吾码2 小时前
JVM 性能调优
java
Estar.Lee2 小时前
查手机号归属地免费API接口教程
android·网络·后端·网络协议·tcp/ip·oneapi
y先森3 小时前
CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow
前端·css·css3
前端Hardy3 小时前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu10830189113 小时前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
弗拉唐3 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
IT女孩儿4 小时前
CSS查缺补漏(补充上一条)
前端·css
2401_857610034 小时前
SpringBoot社团管理:安全与维护
spring boot·后端·安全