怎样在一台电脑安装多个版本的JDK并切换使用?一篇文章教会你所有细节
目录一. 下载安装JDK版本二. 配置环境变量2.1 配置环境变量的步骤2.2 需要注意的细节点2.3 JDK81117版本切换测试三. 项目JDK版本3.1 pom.xml / build.gradle 项目构建约束3.2 IDEA Module - Language Level 项目语言级别约束3.3 Java Compiler bytecode version 项目编译约束3.4 IDEA Project SDK 项目实际使用SDK版本3.5 Maven Runner JRE / Gradle JVM 构建工具实际使用SDK3.6 系统默认JDK版本一. 下载安装JDK版本a. JDK8 下载链接Java Downloads | Oracleb.这里我先插一句因为我们要安装多个JDK版本所以我们最好提前创建好文件夹如下所示我在C盘路径C:\Program Files\Java的文件夹下创建子文件夹分别命名jdk-8jdk-11jdk-17公共 jre 分别用来存放我们要安装的 JDK 和 jrec.然后我们点击上方下载链接跳转到如下下载界面点击 Windows x64 版本下载特别说明下载需要登陆oracle账号如果小伙伴没有的话跟着指引注册一个即可。d.等待右上角显示下载完毕点击我们刚才下载好的jdk8的安装包就会开始jdk8的安装流程e.点击下一步来到如下界面我们点击更改把安装路径更改为我们刚才提前新建的文件夹有些小伙伴如果不想放在C盘可以自行更改安装路径f.点击更改如下所示改到新建的文件夹 jdk-8 ,点击确定g.确定完毕我们就可以看到安装路径已经被更改我们再点击下一步h.继续点击下一步它会让我们配置公共jre的位置路径就选为我们刚才创建的jre文件夹即可更改完毕之后我们点击下一步就安装完成了。在安装jre之后我们后续在安装JDK11和JDK17就不需要再重新安装jre了JDK11 下载链接Java 下载 |神谕 (oracle.com)JDK17 下载链接Java Downloads | Oracle后续 JDK11 和 JDK17 的安装步骤与上述类似就不再重复展示了二. 配置环境变量2.1 配置环境变量的步骤a.然后我们鼠标右键点击此电脑点击属性就会出现如下对话框点击高级系统设置b.然后点击环境变量c.点击环境变量之后出现右侧对话框点击新建d.点击新建然后我们将变量名命名为 JAVA_HOME8然后点击确定e.然后我们找到 path点击编辑2.2 需要注意的细节点然后我们在这里点击新建变量名就叫 %JAVA_HOME8%bin因为我们刚才配置的JDK名字就叫 JAVA_HOME8所以这里也要对对应叫 JAVA_HOME8此外还有一点需要注意大家注意我蓝色线条圈出来的部分那是JDK在安装的过程中默认生成的环境变量如果我们先下载JDK8它代表的就是JDK8如果我们之后又下载了JDK11那么它就会覆盖原来的JDK8而且它又在我们自己自己创建的 %JAVA_HOME8%\bin 变量的上面就会导致我们看似配置的是JDK8版本但实际上系统在读取JDK变量的时候会先读取到上边的JDK11而不会读取到我们下边自己配置的JDK8因此想要自己控制JDK版本就需要我们将自己定义的 %JAVA_HOME8%\bin 上移到系统默认生成的变量的上面将我们自己定义的JDK变量的优先级提高小伙伴想省事直接放到最上面就可以了。如果有些小伙伴变量名叫JAVA_HOME这里也要对应叫JAVA_HOME这一点一定要记住二者是对应关系配置完成之后我们一路点击确认将刚才打开的对话框全部关闭g.回到桌面我们点击键盘上的 winr会出现如下命令框h.输入cmd回车就出现命令窗口我们输入命令 java -version就可以查看我们当前电脑上的JDK版本如下图我当前的JDK版本为java82.3 JDK81117版本切换测试1JDK8切换到JDK11在切换版本之前我们需要先对JDK11和JDK17也进行相应的配置和刚才的 JAVA_HOME8配置过程是一样的我们把JDK11和JDK17也进行配置配置成功后如下图所示配置完成后我们就可以进行版本切换了现在我们点进path把path的变量从 %JAVA_HOME8%\bin 改为 %JAVA_HOME11%\bin如下图然后我们打开命令窗口再次输入 java -version 命令就会看到当前系统的JDK版本为JDK11很神奇把2JDK11切换到JDK17同理和上面一样先去path里面将变量从 %JAVA_HOME11%\bin 改为 %JAVA_HOME17%\bin然后一路确定关闭窗口并且关闭命令行重新启动类似于刷新功能一定要重新打开一个命令窗口然后我们再次输入 java -version就可以看到当前JDK版本为17如下图所示3JDK17切换到JDK8经过了前面两次的展示相信小伙伴们已经学会了还是去path修改 %JAVA_HOME17%\bin 改为 %JAVA_HOME8%\bin一路确定关闭打开的重新打开一个新的命令窗口输入 java -version就会复现 JDK8如下图所示三. 项目JDK版本OK上面我们说到了电脑上安装JDK版本并切换使用但其实上面的操作都是操作系统层面的环境变量配置。影响是全局的无论我们在电脑哪里的命令行执行都会得到这个JDK版本信息。那么我现在有一个问题需要小伙伴们来思考假设现在我同时维护了两个 Java 项目一个旧的项目要用 JDK11重构的新项目准备用 JDK17平时我两个项目都要运行怎么保证它们使用各自的 JDK版本互不影响这里就涉及到了 JDK 版本的读取路径问题了。在 Java 项目中JDK 配置不能简单理解为单一优先级链路而应该分为“项目构建约束”和“本机实际使用的 JDK”两类。如下表格我们简单聊聊它们都在 IDEA 或 项目中的哪些地方配置项类型作用JDK在项目中是否实际生效pom.xml / build.gradle项目构建约束声明项目要求的 Java 版本、编译目标、依赖和插件规则否IDEA Module - Language Level项目构建约束项目/IDE 语法约束限制当前模块允许使用的 Java 语法级别否IDEA Java Compiler bytecode version项目构建约束IDE 编译约束IDEA 自己编译时生成哪个版本的字节码否IDEA Project SDK本机实际使用 JDKIDEA 当前项目使用哪个本地 JDK是Maven Runner JRE / Gradle JVM本机实际使用 JDKMaven/Gradle 进程本身用哪个本地 JDK 启动是系统 JAVA_HOME/ PATH本机实际使用 JDK命令行里 java、javac、mvn 默认用哪个JDK是3.1 pom.xml / build.gradle 项目构建约束打开任意一个 Spring Boot 项目的 pom.xml 文件我们通常都可以看到里面有标注当前项目的 JDK 版本或其它版本如下图我已经做了标识需要注意的是约束只是约束不代表当前项目的实际使用版本它规定当前项目需要使用JDK17打包编译运行3.2 IDEA Module - Language Level 项目语言级别约束打开右上角 IDEA 的设计 logo点开项目结构-模块- 语言级别用来标识当前IDE项目的语言等级约束配置路径File → Project Structure → Modules → Sources → Language level3.3 Java Compiler bytecode version 项目编译约束配置位置File → Settings → Build, Execution, Deployment → Compiler → Java Compiler在此处做Java编译字节码版本配置用于约束IDEA 编译时生成的目标字节码版本3.4 IDEA Project SDK 项目实际使用SDK版本配置位置File → Project Structure → Project → SDK此处配置的 JDK 版本就是当前项目实际使用的 JDK 版本使用此方法就可以解决不同项目使用不同JDK的问题3.5 Maven Runner JRE / Gradle JVM 构建工具实际使用SDKMaven 配置位置File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner → JRE决定构建工具Maven/Gradle 进程本身用哪个本地 JDK 启动Maven 是有内置的JDK的在这里就可以对 Maven 等构建工具的JDK版本进行修改3.6 系统默认JDK版本就是我们上面讲到的环境变量配置 JDK版本其实只是一个保底机制也就是最下面一层确保 IDEA 至少可以读取到一个有效的 JDK版本