felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

使用 sdkman 安装并维护多个版本的 JDK #120

Open felix-cao opened 5 years ago

felix-cao commented 5 years ago

一、sdkman 简介

软件开发工具管理包(Software Development Kit Manager,简称 sdkman),这个工具的主要用途是用来解决在类 unix 操作系统(如 mac, Linux 等)中多种版本开发工具的切换, 安装和卸载的工作.对于windows 系统的用户可以使用 Powershell CLI 来体验.

例如: 项目 A 使用 Jdk7 中某些特性在后续版本中被移除(尽管这是不好的设计),项目 B 使用 Jdk8, 我们在切换开发这两个项目的时候,需要不断的切换系统中的 JAVA_PATH, 这样很不方便,如果存在很多个类似的版本依赖问题,就会给工作带来很多不必要的麻烦.    sdkman 这个工具就可以很好的解决这类问题,它的工作原理是自己维护多个版本,当用户需要指定版本时,sdkman 会查询自己所管理的多版本软件中对应的版本号,并将它所在的路径设置到系统 PATH.

二、安装 sdkman

2.1、MAC/ Linux 下安装很简单

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk version
sdkman 5.0.0+51

2.2、windows 下安装

1)、先去 cygwin 下载 cygwin, 注意安装的时候,选择安装 curl、unzip、zip( 在 Select packages to install)如下图, 图1、图2 2)、设置终端代理 按照 《Mac 命令行翻墙》#81 一文中的步骤来设置翻墙

3、执行命令

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

成功后加入环境变量 vi ~/.bash_profile

export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"

export JAVA_HOME="$SDKMAN_DIR/candidates/java/current"

这里可以参考 在 Git bash 环境下使用 vue-cli(vue 3.0) 工具 设置一下全局变量

三、使用

查看当前可下载的 java

$ sdk list java

安装 jdk1.8

$ sdk install java 8.0.275.open-adpt
$ sdk install java 8.282.08.1-amzn

默认安装位置在~/.sdkman/candidates/java/目录下

使用 default 切换默认运行版本

$ sdk default java 8.0.275.open-adpt

卸载安装包

sdk uninstall java 8.0.275.open-adpt
# or
sdk rm java 8.0.275.open-adpt

四、其他安装

$ sdk install maven
$ sdk install gradle 

五、错误

当我们使用时,会提示错误

ERROR: JAVA_HOME is set to an invalid directory: /home/sunwin/.sdkman/candidates /java/current

export JAVA_HOME=C:/\cygwin64/\home/\sunwin/.sdkman/\candidates/\java/\8.0.191

Rerfence

felix-cao commented 3 years ago

提示错误:

Restart after installing zip.

SDKMan需要zip,默认情况下Windows Git Bash中不包含zip。要解决这个问题,请转到https://sourceforge.net/projects/gnuwin32/files/ 并在列表中找到zip。下载zip-3.0-bin.zip并在bin文件夹中解压缩zip.exe。复制到c:\程序文件\Git\usr\bin。再次运行SDKMan install脚本。

felix-cao commented 3 years ago

Intellij does not succeed JAVA_HOME JDKs installed with SDKMAN are not selectable in the IntelliJ IDE

felix-cao commented 12 months ago

JDK1.8下载、安装与配置完整图文教程