如何优雅的切换环境变量(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】

相关推荐
P.H. Infinity5 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天9 分钟前
java的threadlocal为何内存泄漏
java
caridle20 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
cy玩具21 分钟前
点击评论详情,跳到评论页面,携带对象参数写法:
前端
^velpro^25 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋329 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花33 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端36 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan43 分钟前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源