Как мне настроить собственную сборку JDK в sdkman?

Я смог поиграть с последним двоичным файлом раннего доступа для Project Loom, загрузив файл с http://jdk.java.net/loom/, распаковав его (у меня был каталог с именем), установив JAVA_HOME env var в jdk-18 каталог и добавив bin подкаталог для сборки в начало моего PATHenv var. Я смог использовать сборку для компиляции и запуска программы Java с использованием функций предварительного просмотра виртуального потока.

Но это похоже на ручной процесс. Мне нравится, как SDKMAN управляет JDK в моей системе. Как я могу настроить эту сборку раннего доступа (или любую другую сборку JDK, если на то пошло) как запись в списке JDK, управляемых SDKMAN, чтобы я мог изменить ее, например, набрав sdk default java <my-jdk-18-name>?

2 ответа

SDKMAN имеет функцию «Установить локальные версии» (https://sdkman.io/usage#localversion).

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

      wget https://download.java.net/java/early_access/loom/7/openjdk-18-loom+7-288_linux-x64_bin.tar.gz
tar -xf openjdk-18-loom+7-288_linux-x64_bin.tar.gz
mv jdk-18/ 18-loom
sdk install java 18-loom $(realpath 18-loom/)

После установки и подключения:

      ~/javas > sdk default java 18-loom

Default java version set to 18-loom
~/javas > which java
/home/matt/.sdkman/candidates/java/current/bin/java
~/javas > java --version
openjdk 18-loom 2022-03-15
OpenJDK Runtime Environment (build 18-loom+7-288)
OpenJDK 64-Bit Server VM (build 18-loom+7-288, mixed mode, sharing)

Переключение переменной PATH для управления несколькими JDK было единственным простым способом ведения дел в течение многих лет, однако общая автоматизация этого процесса постепенно улучшается.

В настоящее время я использую jenv, обычно должна поддерживаться любая ОС POSIX, я использую ее на Mac ( brew install jenv).

Главный его недостаток для меня — если включить его init $(jenv init -)в скрипте терминала RC задержит запуск терминала на несколько секунд.

Переключение для конкретной папки будет выглядеть так: jenv local <my-custom-jdk-name>

Другие вопросы по тегам