在linux上用SDKMan对Java进行多版本管理
创始人
2024-05-29 13:48:10
0

在linux上用SDKMan对Java进行多版本管理

有一个工具叫SDKMan,它允许我们这样做。官方网站这样描述:

TIP: "SDKMan 是一个工具,用于在大多数基于Unix的系统上管理多个软件开发工具包的并行版本。它提供了一个方便的命令行接口(CLI)和API,用于安装、切换、删除和列出候选项。”

使用SDKMan的一些要点如下:

  1. SDKMan是使用bash编写的。它要求curl和zip/unzip已经安装在您的系统中。
  2. SDKMan可以运行在任何基于unix的平台上,例如Mac OSX、Linux、Cygwin、Solaris和FreeBSD。
  3. SDKMan可以为JVM安装大约29个软件开发工具包,如Java、Groovy、Scala、Kotlin、Ceylon、Ant、Gradle、Grails、Maven、SBT、Spark、Spring Boot和Vert.x。
  4. 我们不需要担心设置’ HOME ‘和’ PATH '环境变量,因为SDKMan会自动处理它。

所有用户使用同一个SDKMan

修改 /etc/profile 文件
最后面添加:

#wjw_add for global SDKMan
export SDKMAN_DIR="/usr/local/sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"

执行: source /etc/profile来生效!

下载sdkman:

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

激活sdkman:

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

使用SDKMan安装Java

SDKMan支持为JVM安装29个软件开发工具包,例如Java、Groovy、Scala、Kotlin、Ceylon、Ant、Gradle、Grails、Maven、Gradle、SBT、Spark和Spring Boot。我们可以使用sdk list命令获得完整的列表。

命令sdk list java将给我们一个java版本列表,我们可以使用SDKMan安装,如下所示:

$ sdk list java
================================================================================
Available Java Versions
================================================================================13.ea.02-open       1.0.0-rc-10-grl                                        12.ea.26-open       1.0.0-rc-9-grl                                         11.0.2-zulu         1.0.0-rc-8-grl                                         11.0.2-open                                                                11.0.1-zulufx                                                              10.0.2-zulu                                                                10.0.2-open                                                                9.0.7-zulu                                                                 9.0.4-open                                                                 8.0.202-amzn                                                               8.0.201-zulu                                                               8.0.201-oracle                                                             8.0.192-zulufx                                                             7.0.181-zulu                                                               1.0.0-rc-11-grl                                                            
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

现在,假设我们想安装OpenJDK版本的Java v9。然后,我们将在终端中执行下面的命令,该命令还将更新 PATHJAVA_HOME 变量:

$ sdk install java 9.0.4-open

该命令将花费一些时间来执行,因为它将下载JDK到我们机器上,该命令将输出如下内容:

Downloading: java 9.0.4-open
In progress...
######################################################################## 100.0%Repackaging Java 9.0.4-open...Done repackaging...
Cleaning up residual files...Installing: java 9.0.4-open
Done installing!Setting java 9.0.4-open as default.

现在,如果我们检查Java版本和JAVA_HOME,可以看到Java已经更新到9.0.4

$ java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)$ echo $JAVA_HOME
/usr/local/sdkman/candidates/java/current

我们可以按照相同的过程来安装上面列表中看到的任何版本。让我们假设要安装Java 11版本。然后,我们可以执行命令:

$ sdk install java 11.0.2-open
Downloading: java 11.0.2-open
In progress...
######################################################################## 100.0%Repackaging Java 11.0.2-open...Done repackaging...
Cleaning up residual files...Installing: java 11.0.2-open
Done installing!Do you want java 11.0.2-open to be set as default? (Y/n): YSetting java 11.0.2-open as default.

现在,如果我们再次检查我们的Java版本和JAVA_HOME,我们可以看到Java已经更新到11.0.2:

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)$ echo $JAVA_HOME
/usr/local/sdkman/candidates/java/current

WARNING: 注意:有时,您需要关闭并重新打开终端才能看到更改。

将SDKMan指向已安装的现有Java版本

首先,我们需要找出您的机器上安装了Java的位置。在我的机器上,它安装在文件夹 jdk1.8.0_172.jdk,它位于文件夹/usr/Java/下。让我们通过****来引用这个文件夹。

我们要做的第二件事是在已安装的****和SDKMan之间建立一个符号链接。我们可以通过运行以下命令来实现:

# Oracle JDK
ln -s  /usr/local/  $SDKMAN_DIR/candidates/java/
ln -s /usr/local//bin  $SDKMAN_DIR/candidates/java//bin# Open JDK
ln -s  /usr/lib/jvm/  $SDKMAN_DIR/candidates/java/
ln -s /usr/lib/jvm//bin  $SDKMAN_DIR/candidates/java//bin

现在,如果我们再次执行sdk list java命令,我们将得到:

================================================================================
Available Java Versions
================================================================================+ jdk1.8.0_172.jd     8.0.201-zulu                                           13.ea.02-open       8.0.201-oracle                                         12.ea.26-open       8.0.192-zulufx                                         11.0.2-zulu         7.0.181-zulu                                           > * 11.0.2-open         1.0.0-rc-12-grl                                        11.0.2.j9-adpt      1.0.0-rc-11-grl                                        11.0.2.hs-adpt      1.0.0-rc-10-grl                                        11.0.1-zulufx       1.0.0-rc-9-grl                                         10.0.2-zulu         1.0.0-rc-8-grl                                         10.0.2-open                                                                9.0.7-zulu                                                                 * 9.0.4-open                                                                 8.0.202-amzn                                                               8.0.202.j9-adpt                                                            8.0.202.hs-adpt                                                            ================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

我们可以清楚地看到,我们的机器上已经安装了3个JDK,并且JDK 11.0.2-open目前正在使用。但是,如果我们想在它们之间切换或者安装一个新的,我们可以通过使用**sdk use java **就能非常容易地做到这一点,如下所示:

使用Java 9

$ sdk use java 9.0.4-open
Using java version 9.0.4-open in this shell.$ java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

使用Java 11

$ sdk use java 11.0.2-open
Using java version 11.0.2-open in this shell.$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

TIP: 使用 sdk use 命令只能使您在执行 sdk use 命令的终端shell中使用指定版本的JDK。如果您关闭终端并再次打开它,您将使用先前安装的版本。

但是如果您想为所有终端和应用程序激活一个版本的JDK,您可以使用命令**sdk default java 😗*

$ sdk default java 11.0.2-open
Default java version set to 11.0.2-open$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

或者,您可以卸载该版本并重新安装它,如下所示,这将把该版本设置为当前JDK。

卸载一个JDK版本

如果你想卸载任何JDK版本,例如11.0.2-open,你可以这样做:

$ sdk uninstall java 11.0.2-open

而且,如果您想再次安装卸载后的版本,您可以重新安装它,而且这一次,SDKMan不会下载它,因为它已经在您的机器上安装了它(如果您不手动删除它)。

$ sdk install java 11.0.2-openFound a previously downloaded java 11.0.2-open archive. Not downloading it again...Installing: java 11.0.2-open
Done installing!Do you want java 11.0.2-open to be set as default? (Y/n): ySetting java 11.0.2-open as default.

删除SDKMan

先删除

rm -r -f ~/.sdkman/

最后一步删除 .zshrc , .bash_profile , profile 文件中的初始化代码段

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...