当前位置: 首页 > 科技观察

如何使用SDKMAN来管理你的JDK

时间:2023-03-14 10:19:33 科技观察

译者|徐磊审稿人|系统上维护着不同版本的JDK、Maven等。之前听说过SDKMAN,没有花时间深究,现在知道怎么用了。在开始使用SDKMAN之前,我查看了我的Linux上的JDK版本(使用的是Ubuntu20.04.4LTS版本)。首先,我检查了update-alternatives命令返回的Java版本列表。发现我的系统中有两个Java11版本。Shell$update-alternatives--listjava/usr/lib/jvm/java-11-openjdk-amd64/bin/java/usr/lib/jvm/jdk-11.0.3+7/bin/java我也是通过IntelliJ安装的通过JDK,这些可以在系统主目录的.Jdks中找到。这留下了3个不同的Java版本。Shell$ls.jdks/openjdk-14.0.1openjdk-16.0.2openjdk-14.0.1-intellij-downloader-info.txtopenjdk-17所以结论是:我搞砸了系统。现在,让我们看看SDKMAN是否可以帮助我清理我的环境并删除所有多余的JDK。2、安装SDKMAN安装非常简单,执行以下命令即可:Shell$curl-s"https://get.sdkman.io"|庆典...全部完成!请打开一个新终端,或在现有终端中运行以下命令:source"/home//.sdkman/bin/sdkman-init.sh"然后发出以下命令:sdkhelpEnjoy!!!通过source命令读取并执行所需的初始化文件命令:Shell$source"/home//.sdkman/bin/sdkman-init.sh"可以通过请求SDKMAN的版本来验证安装是否成功。Shell$sdk版本====广播======================================================================*2022-03-03:jbang0.90.2可在SDKMAN上使用!https://github.com/jbangdev/jbang/releases/tag/v0.90.2*2022-03-02:quarkus2.7.3.Final在SDKMAN上可用!https://github.com/quarkusio/quarkus/releases/tag/2.7.3.Final*2022-02-28:micronaut3.3.4可在SDKMAN上使用!=======================================================================================SDKMAN5.13.2可以看到,最新的版本也显示出来了,对于获取最新的通知也很有帮助可用版本。以上就是SDKMAN安装的全部内容。3.JDKlistSDKMAN可以安装哪些工具包可以通过查看网站或者执行list命令来查看。您还可以使用lessbasic命令翻阅和搜索列表。Shell$sdklist您可以通过在list命令的java参数后缀获得更详细的JDK可用版本列表。当然,这些可用的JDK也可以在网站上找到。另外,还可以使用less命令再次进行分页输出。Shell$sdk列表java4.安装JDK首先,我将检查系统默认使用的Java版本。看来我使用的是AdoptOpenJDK版本11.0.3,它比我预期的要旧。Shell$java--versionopenjdk11.0.32019-04-16OpenJDKRuntimeEnvironmentAdoptOpenJDK(build11.0.3+7)OpenJDK64-BitServerVMAdoptOpenJDK(build11.0.3+7,mixedmode)从AdoptiumAdoptOpenJDK提供的SDKMAN中选择,称为EclipseTemurin,安装最新的JDK17LTS版本。Shell$sdkinstalljava17.0.2-temDownloading:java17.0.2-temInprogress...RepackagingJava17.0.2-tem...Donerepackaging...Installing:java17.0.2-temDoneinstalling!设置java17.0.2-tem作为默认值。再次验证默认的Java版本号是否已更改为您刚刚安装的版本号。Shell$java--versionopenjdk17.0.22022-01-18OpenJDK运行时环境Temurin-17.0.2+8(build17.0.2+8)OpenJDK64-BitServerVMTemurin-17.0.2+8(build17.0.2+8、混合模式,分享)当然你也可以用同样的方式安装JDK11LTS版本。最后,问题来了,要不要把这个JDK作为默认版本呢?当然不是,JDK17是最新的LTS版本,应该是默认版本。Shell$sdkinstalljava11.0.14-temDownloading:java11.0.14-temInprogress...RepackagingJava11.0.14-tem...Donerepackaging...Installing:java11.0.14-temDoneinstalling!你想要吗java11.0.14-tem设置为默认值?(是/否):n5。默认JDK如果你改变主意,仍然想使用JDK11作为默认版本,那么你可以使用default命令来实现这一点。Shell$sdk默认java11.0.14-tem默认java版本设置为11.0.14-tem验证这一点:Shell$java--versionopenjdk11.0.142022-01-18OpenJDKRuntimeEnvironmentTemurin-11.0.14+9(build11.0.14+9)OpenJDK64-BitServerVMTemurin-11.0.14+9(build11.0.14+9,mixedmode)然后重置为JDK17.Shell$sdkdefaultjava17.0.2-temDefaultjavaversionset到17.0.2-tem当然也可以通过在终端会话中使用use命令来更改默认的JDK。Shell$sdk使用java11.0.14-tem在此shell中使用java版本11.0.14-tem。在这个命令窗口中,可以看到当前使用的JDK版本是JDK11。Shell$java--versionopenjdk11.0.142022-01-18OpenJDK运行时环境Temurin-11.0.14+9(build11.0.14+9)OpenJDK64-BitServerVMTemurin-11.0.14+9(build11.0.14+9、混合模式)再打开一个终端窗口,发现JDK版本还是JDK17,注意JAVA_HOME环境变量也指向正确的Java版本。Shell$echo$JAVA_HOME/home/<你的用户>/.sdkman/candidates/java/current6.清除其他JDK当前JDK已经通过SDKMAN安装完毕,是时候清除系统中其他JDK了。外壳$dpkg--list|grepjdkiiopenjdk-11-jre-headless:amd6411.0.13+8-0ubuntu1~20.04removeopenjdk-11-jre-headless:amd64Shell$sudoaptremoveopenjdk-11-jre-headless:amd64再次通过更新验证-alternatives命令,我们注意到仍然有可用的Java11版本。Shell$update-alternatives--listjava/usr/lib/jvm/jdk-11.0.3+7/bin/java通过update-alternatives命令删除。Shell$sudoupdate-alternatives--remove"java"/usr/lib/jvm/jdk-11.0.3+7/bin/javaupdate-alternatives:removingmanuallyselectedalternatives-switchingjavatoautomode通过update-alternatives命令验证,它已被删除。Shell$update-alternatives--listjavaupdate-alternatives:error:noalternativesforjava但是并没有从文件系统中删除,需要导航到/usr/lib/jvm目录,然后删除JDK目录。Shell$sudorm-rfjdk-11.0.3+7/剩下要做的就是删除IntelliJ安装的JDK。它们位于主目录中的.jdks中。导航到您的主目录并删除.jdks目录。外壳$rm-rf.jdks/7.为IntelliJ设置JDK打开IntelliJ导航到文件-项目结构,这是您配置JDK的地方。它位于ProjectStructure而不是通常的Settings目录下,这有点奇怪。通过点击+号,您可以添加SDKMANJDK。您还需要为您的项目选择一个JDK。构建您的项目,在日志中,您会注意到正在使用SDKMANJDK。8.结论SDKMAN是一个易于使用的工具,可以用来控制不同的版本,应该成为您开发工具包的一部分。它减少了我系统中的混乱,并允许我轻松控制系统中的不同版本。另外,还可以使用upgrade命令查看是否有新版本。译者介绍徐磊,社区编辑,某知名电商技术副总监,专注于Java后端开发、技术管理、架构优化、分布式开发等领域。原标题:HowtoManageYourJDKsWithSDKMAN,作者:GunterRotsaert