Статьи

Как установить несколько версий Java на одном компьютере

Некоторое время назад я написал одну статью Java Lambda Expression с объяснением на примере, но мне было легко исследовать и Java 8, потому что я использовал его в своем проекте, и мне было разрешено установить и использовать его. Но в моем текущем проекте мы все еще используем Java 8, и теперь я хочу обновить себя и изучить Java 11, но не могу установить его.

И это происходит со многими разработчиками Java. Иногда вы хотите изучить и изучить последнюю версию Java, например Java 11, но вы не можете установить ее на свой компьютер, потому что вы и ваша команда работаете над какой-то более старой версией, например Java 8, и вы не хочу ломать ваш проект.

Или предположим, что вы работаете над несколькими проектами, некоторые из которых используют Java 8, а некоторые новые проекты используют Java 11. Так что для параллельной работы над этими проектами вам нужно будет установить несколько JDK на вашу машину, и вы сможете переключаться между ними. между ними.

Что, если есть способ, и что, если у вас есть возможность установить несколько версий Java и выключить и включить их в соответствии с вашими потребностями.

Ну, есть инструмент под названием SDKMan, который позволяет нам делать то же самое и согласно официальному сайту:


SDKMan! это инструмент для управления параллельными версиями нескольких
Комплекты разработки программного обеспечения на большинстве систем на основе Unix. Он предоставляет удобный интерфейс командной строки (CLI) и API для установки, переключения, удаления и вывода списка кандидатов.

Некоторые моменты о SDKMan следующие:

  1. SDKMan бесплатен для использования и разработан сообществом открытого кода.
  2. SDKMan написан на bash и для его работы требуются только программы curl и zip / unzip .
  3. SDKMan может установить около 29 комплектов разработки программного обеспечения для JVM, таких как Java, Groovy, Scala, Kotlin и Ceylon. Муравей, Gradle, Grails, Maven, SBT, Spark, Spring Boot, Vert.x.
  4. Нам не нужно беспокоиться о настройке PATH среды _HOME и PATH потому что SDKMan обрабатывает их автоматически.

Установка SDKMan

SDKMan может работать на любых платформах на основе UNIX, таких как Mac OSX, Linux, Cygwin, Solaris и FreeBSD, и мы можем установить его с помощью следующих команд:

Просто откройте новый терминал и введите:

1
2
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"

Мы можем проверить установку, используя sdk version а команда sdk help предоставит полную справку об использовании команды sdk .

Потому что SDKMan написан на bash и требует наличия в вашей системе только curl и zip / unzip . Вы также можете установить SDKMan на Windows, сначала установив Cygwin или Git Bash для среды Windows, а затем выполнив указанные выше команды.

Установка Java с использованием SDKMan

SDKMan поддерживает установку 29 комплектов разработки программного обеспечения для JVM, например, Java, Groovy, Scala, Kotlin и Ceylon, Grails, SBT, Spark, Spring Boot. Мы можем получить полный список с помощью команды sdk list .

SDKMan также помогает нам устанавливать инструменты сборки, такие как Ant, Maven и Gradle. Вы можете узнать больше об этих инструментах сборки на сравнениях инструментов сборки Java: Ant против Maven против Gradle .

Команда sdk list java выдаст нам список версий java, которые мы можем установить с помощью SDKMan, как показано ниже:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ 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, затем мы выполним следующую команду в нашем терминале, которая также обновит переменные PATH и JAVA_HOME:

1
$ sdk install java 9.0.4-open

Выполнение команды займет некоторое время, поскольку она загружает JDK на наш компьютер, и команда выдаст что-то вроде:

01
02
03
04
05
06
07
08
09
10
11
12
13
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

1
2
3
4
5
6
7
$ 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
/Users/xbbnrde/.sdkman/candidates/java/current

Мы можем следовать тому же процессу, чтобы установить любую версию, которую мы видим в приведенном выше списке. Предположим, мы хотим установить версию Java V11, а затем выполнить команду:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
$ 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): Y
 
Setting java 11.0.2-open as default.

Теперь, если мы снова проверим нашу версию Java и JAVA_HOME, мы увидим, что Java обновлена ​​до 11.0.2:

1
2
3
4
5
6
7
$ 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
/Users/xbbnrde/.sdkman/candidates/java/current

Примечание. В некоторых случаях вам потребуется закрыть и снова открыть терминал, чтобы увидеть изменения.

Указание SDKMan на существующую установленную версию Java

Для начала нам нужно выяснить, где на вашей машине установлена ​​Java. На моей машине он установлен в папке jdk1.8.0_172.jdk которая находится в папке /Library/Java/JavaVirtualMachines , давайте обратимся к этой папке
<java-folder> .

Второе, что мы хотим сделать, это установить символическую ссылку между нашими установленными <java-folder> и SDKMan, мы можем сделать это, выполнив следующие команды:

1
2
3
$ ln -s /Library/Java/JavaVirtualMachines/<java-folder>  ~/.sdkman/candidates/java/<java-folder>
 
$ sudo ln -s /Library/Java/JavaVirtualMachines/<java-folder>/Contents/Home/bin  ~/.sdkman/candidates/java/<java-folder>/bin

Теперь, если мы снова выполним команду sdk list java , мы получим:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
================================================================================
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 <version_which_you_want_to_use> как sdk use java <version_which_you_want_to_use> ниже:

Использование Java 9

1
2
3
4
5
6
7
$ 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 8

1
2
3
4
5
6
7
$ sdk use java jdk1.8.0_172.jdk
Using java version jdk1.8.0_172.jdk in this shell.
 
$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

Использование Java 11

1
2
3
4
5
6
7
$ 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)


Использование команды sdk use позволит вам использовать указанную версию JDK только в той же терминальной оболочке, где вы выполняете команду sdk use . И если вы закроете терминал и откроете его снова, вы окажетесь на ранее установленной версии.

Но если вы хотите активировать одну версию JDK для всех терминалов и приложений, вы можете использовать команду sdk default java <your_version>

1
2
3
4
5
6
7
$ 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 вы можете сделать это следующим образом:

1
$ sdk uninstall java 11.0.2-open

И в случае, если вы хотите снова установить удаленную версию, вы можете установить ее снова, и на этот раз SDKMan не загрузит ее, потому что она уже установлена ​​на вашем компьютере (если вы не удалили ее вручную).

01
02
03
04
05
06
07
08
09
10
$ sdk install java 11.0.2-open
 
Found 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): y
 
Setting java 11.0.2-open as default.

Используя SDMan установленный JDK от IntelliJ IDEA

SDKMan устанавливает все JDK в .sdkman/candidates/java/ и вы можете найти папку .sdkman в вашем домашнем каталоге.

После открытия любого Java-проекта в IntelliJ вы можете нажать Command + : чтобы открыть окно структуры проекта. В этом окне вам нужно будет нажать на
New... разделе Project SDK и там вы можете ввести .sdkman/candidates/java/ в окне просмотра и выбрать любой JDK из .sdkman/candidates/java/ .

Поскольку .sdkman — это скрытая папка, и в случае, если у вас возникнут проблемы с ее поиском, вы всегда можете создать символическую ссылку на нее с помощью скрытой папки, используя команду ниже

1
$ ln -s ~/.sdkman ~/sdkman

Вы можете найти полный исходный код для моих статей в этом Github-репозитории и, пожалуйста, не стесняйтесь оставлять свои ценные отзывы.

Опубликовано на Java Code Geeks с разрешения Нареша Джоши, партнера нашей программы JCG . См. Оригинальную статью здесь: Как установить несколько версий Java на одной машине

Мнения, высказанные участниками Java Code Geeks, являются их собственными.