论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
用sdkman管理多个jdk切换
用sdkman管理多个jdk切换
铁佛
金牌会员
|
2024-10-13 14:32:25
|
显示全部楼层
|
阅读模式
楼主
主题
880
|
帖子
880
|
积分
2640
前言
最近项目前后端进行升级,需要在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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
铁佛
金牌会员
这个人很懒什么都没写!
楼主热帖
R语言使用dplyr包的arrange函数对dataf ...
Visual Studio 2022 安装低版本的 .Net ...
通过cookie和localstorage实现数据持久 ...
身为一个测试工程师只会点点点?我劝您 ...
手把手教你入门Python中的Web开发框架 ...
Apifox:节省研发团队的每一分钟 ...
.net6下使用DotnetZip解压文件,中文出 ...
实现华为多屏协同--非华为电脑下载12.0 ...
为什么用了大牌工具后报表开发依然头痛 ...
[go-redis] go操作redis数据库
标签云
存储
挺好的
服务器
浏览过的版块
前端开发
快速回复
返回顶部
返回列表