• 用sdkman管理多个jdk切换


    前言

    最近项目前后端进行升级,需要在jdk8和jdk17两个版本切换。最简单的是通过手动切换,但切换过程太繁琐,修改环境变量,达到切换目的。于是尝试其它解决方案,最终确实使用sdkman工具。

      sdkman 是一款面向Java开发者的命令行工具,旨在简化操作系统上SDKs的管理。支持跨平台使用,提供便捷的版本控制和切换功能,通过维护候选SDK列表,让用户能够轻松安装、更新和卸载各类软件开发工具包。

     下面详细介绍windows下和linux下安装过程。

    (1)、Windows 安装

    目前 Windows 有两种安装方式,WSL 和 Git Bash 的方式,Git 大家电脑中应该都有安装,因此下面基于 Git Bash 进行安装 sdkman 

    1、安装前准备:首先安装 sdkman 会使用到 unzip、zip、curl、sed 命令, Git缺少 zip :

     zip -v  

    如果未找到,下载 zip 包:

    https://sourceforge.net/projects/gnuwin32/files/zip/3.0/

     下载后,将解压后 bin 目录下的 zip.exe 拷贝到 Git 安装目录下 mingw64/bin 目录下:

     同时 zip 还依赖 bzip2 ,因此还要下载 bzip2 包:

    https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/

     下载后,将解压后 bin 目录下的 bzip2.dll 拷贝到 Git 安装目录下 mingw64/bin 目录下:

      然后再次尝试 zip 命令,可以看到已经可以了:

     

    2、安装sdkman:接下来下载安装 sdkman ,在 Git Bash 中执行如下操作:

    curl -s "https://get.sdkman.io" | bash 

     安装完成后,将 sdkman 添加到环境变量中:

    source "$HOME/.sdkman/bin/sdkman-init.sh" 

     每次启动终端时自动加载 sdkman,将以下行添加到.zshrc文件中:

    echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.zshrc

    重新加载 .zshrc

    source ~/.zshrc

    验证环境:

    sdk version 

     

    3、sdkman 使用

    3.1 查看所有可用的SDK

    sdk list 

     可以看到非常多的应用,而不限于 JDK 。

     

    3.2 查看所有指定类型可用的SDK:

    sdk list java 

     3.3 安装指定类型版本的SDK:

    sdk install java 21.0.2-open 

     3.4 切换并使用指定类型版本的SDK

    sdk use java 21.0.2-open 

     验证 java 版本:

    java --version 

     3.5 设置默认版本

    sdk default java 21.0.2-open 

     3.6 查看当前使用的 SDK

    sdk current 

     

    3.7 查看当前使用的指定类型的 SDK

    sdk current java 

     

    3.8 查看 SDK 安装目录

    sdk home java 21.0.2-open 

     

    3.8 卸载指定类型版本的SDK

    sdk uninstall java 21.0.2-open

     

    3.9 升级 sdkman

    sdk selfupdate

     

    2)、Linux下安装sdkman

    Windows下安装过程是一样的,linux系统默认缺少一些命令,我们需要提前安装好。

    2.1.需要安装curl,unzip,zip

    sudo apt-get install curl

    sudo apt-get install unzip

    sudo apt-get install zip

    2.2安装sdkman

    curl -s "https://get.sdkman.io" | bash

    2.3安装完成后执行

    source "$HOME/.sdkman/bin/sdkman-init.sh"

    2.4验证

    sdk version 

     

      sdkman会自动为设置相应的环境变量。如果想确保在所有终端会话中都使用 sdkman设置的 Java 版本,可以手动设置 JAVA_HOME 环境变量。在 .zshrc 文件中添加以下行:

    export JAVA_HOME="$HOME/.sdkman/candidates/java/current"

    export PATH="$JAVA_HOME/bin:$PATH"

     重新加载 .zshrc:

    source ~/.zshrc

     

    3)、常见问题:

        cmd命令窗口直接java -version 找不到命令,需要在环境变量设置路径:

    JDK安装路径默认情况下在$HOME/.sdkman/candidates/java/current/bin,具体路径可以通过命令在 Git Bash 中查看:

    echo "$HOME/.sdkman/candidates/java/current/bin"

     /c/Users/XXX/.sdkman/candidates/java/current/bin

    注:XXX是你的用户名

    3.1配置环境变量 

        操作步骤:我的电脑-》右键属性-》高级系统设置-》环境变量-》系统环境-》系统变量

    添加: JAVA_HOME:C:\Users\Administrator\.sdkman\candidates\java\current

     Path 中添加:%JAVA_HOME%\bin

     

     3.2验证是否生效

    打开终端,输入java -version ,验证是否是自己刚刚安装的版本

    java -version 

      

    4)、卸载 sdkman

    4.1. 删除 sdkman 目录

    删除 sdkman 安装目录:

    rm -rf ~/.sdkman

    4.2. 移除配置文件中的 sdkman 配置

    编辑的 shell 配置文件(例如 .zshrc),删除与 sdkman 相关的行:

    nano ~/.zshrc

    找到并删除以下行:

    source "$HOME/.sdkman/bin/sdkman-init.sh"

    export JAVA_HOME="$HOME/.sdkman/candidates/java/current"

    export PATH="$JAVA_HOME/bin:$PATH"

      保存并退出(在 nano 中使用 Ctrl+X 然后按 Y 确认保存)。

     4.3.重新加载 shell 配置文件

    删除配置行后,重新加载 shell 配置文件:

    source ~/.zshrc

     

    5)、jdk版本选择

       Jdk list java 列出来的jdk版本,都是在openJdk上扩展的,基本功能都差不多,根据需要自行下载,目前在开发过程中主要用到的是jdk8、jdk17、jdk21等,比如在本人电脑上安装了这三个版本:8.0.422-zulu、17.0.12-zulu、21.0.2-open。

    切换到21,需要执行下面两个命令:

    sdk use java 21.0.2-open

    sdk default java 21.0.2-open

     

    下载安装包在:C:\Users\Administrator\.sdkman\tmp目录下 

     安装位置:C:\Users\Administrator\.sdkman\candidates\java目录下

     

     Current是当前使用的jdk。

     提示:刚开始安装sdkman选择d盘指定目录,但zshrc文件修改配置不行,折腾半天,最后还是换回了默认路径。不知道为什么,没再研究.....

     

    6)、idea配置

    注意:Idea中配置jdk,和手动安装的设置一样,设置成current目录不行,切换后,无法自动切换。所以如果需要在各个jdk版本间切换,最好在sdk中都选择上,sdkman切换后,idea手动再选择下: 

     Sdks都添加上: 

     Project中指定当前使用中的jdk: 

     启动入口,jdk如果没有改过来,也需要手动切换下:

     

     

    至此,安装sdkman管理多个jdk版本,并在idea中使用过程就完结了。

    在安装过程中,可能会碰到其它问题,系统环境不同,问题都可能不尽相同,根据不同问题查找解决方案,实现sdkman对jdk管理的目的。

        sdkman工具,是非常好用的跨平台管理jdk工具,希望能帮助到切换jdk烦恼的你!

     

    参考文章:

    https://blog.csdn.net/crazywkl/article/details/142353085

    https://blog.csdn.net/qq_43692950/article/details/140816049

  • 相关阅读:
    AWS攻略——一文看懂AWS IAM设计和使用
    MVCC与BufferPool缓存机制
    Practicing Version Control
    SpringCloudGateway之统一鉴权篇
    20221108:onnx2caffe错误处理
    一个帮各位填秋招表格省一点事的浏览器插件
    jeecgBoot 一个表格中显示多个字段
    DC-7 靶机
    antv系列图引擎X6、G6比对选择,并实现vue实例ER图
    pytorch实现yolov1
  • 原文地址:https://www.cnblogs.com/chaiwangbing/p/18462457