Несколько версий java на одном компьютере linux

Обновлено: 04.07.2024

Если на компьютере с операционной системой Debian установлены несколько версий Java, то иногда бывает необходимо сменить, какая из них должна использоваться по умолчанию (по дефолту). Для этого существует специальная утилита, которая входит в состав пакета java-common — update-java-alternatives. Этот пакет скорее всего уже есть в системе, если установлена Java.

Получение списка путей установок различных версий

Прежде всего, при помощи утилиты update-java-alternatives можно получить список путей, по которым находятся файлы различных версий Java. Для этого необходимы права суперпользователя:

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

java-1.10.0-openjdk-amd64 1101 /usr/lib/jvm/java-1.10.0-openjdk-amd64
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64

Это очень полезная информация, так как знание пути, по которому находится нужная версия Java, необходимо для выполнения основного действия.

Проверка версии, установленной по дефолту

Следующим подготовительным шагом будет определение, какая именно версия сейчас используется по умолчанию. Внимание, тут нет опечатки, дефис перед словом version всего один:

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

Видно, что дефолтной является версия 11. Особое внимание стоить обратить на дату релиза — сентябрь. Я пишу эти строки в июле.

Установка версии по умолчанию

Почему это бывает нужно? В моём случае, сразу после установки у меня не запустилась среда разработки Arduino, которая написана на Java. Собственно, вместе с Arduino и установилась 11-ая версия Java. Я решил, что она ещё не доработана (у меня Debian Testing) и стоит попробовать предыдущую версию. Переключился с версии 11 на версию 10 следующей командой:

sudo update-java-alternatives --set /usr/lib/jvm/java-1.10.0-openjdk-amd64

После --set я указал путь до файлов установленной Java 10 версии. Этот путь я выяснил выше, используя команду --list. Теперь при определении версии Java вывод в терминале стал таким:

Есть Java 8 , Java 9 и к ним JDK 8 и JDK 9.
Нужно ли удалить одну из версий, чтобы не возникало никаких сбоев?

введите сюда описание изображения

Интересуюсь, потому что есть одно java приложение, которое было создано на другом компьютере не запускается на моем. Возможно, в этом дело.

67.8k 5 5 золотых знаков 45 45 серебряных знаков 104 104 бронзовых знака Можно, только в переменных путях PATH можно будет только одно держать, чтобы другую java запускать понадобится батник, в котором будет путь к той джаве прописан В принципе держать младшую версию нет никакой надобности, потому что Java делает особый упор на обратной совместимости, то есть более новая версия Java будет делать все то же, что и старая и еще немножко нового. @pavlofff Ява-то будет делать, а какой-нибудь дебильный апплет не будет запускаться, потому что ему подавай исключительно шестую (случай из жизни). @Эникейщик вот кажется у меня эта проблема ! не запускается маленькое приложение. Возможно ли как-то обойти эту проблему ? или нужно узнать версию, на которой она создавалась и затем установить ? @pavlofff обратная совместимость у них так себе, на самом деле, по крайней мере, в java9 35.6k 2 2 золотых знака 53 53 серебряных знака 78 78 бронзовых знаков

Если у вас установлены две версии java, это не принесет проблем(кроме этих https://www.java.com/ru/download/faq/remove_olderversions.xml, но это скорее рекомендации для обычных пользователей, а не разработчиков). Вы можете выбирать, какую из них использовать как для компиляции, так и для запуска приложения: нужно изменить PATH, либо указать полный путь до исполняемой программы:
"C:\Program Files\Java\jdk1.8.0_161\bin\javac" - вызов компилятора Java 8
"C:\Program Files\Java\jdk1.8.0_161\bin\java" - запуск приложения на Java 8
"C:\Program Files\Java\jdk1.9.0_160\bin\javac" - вызов компилятора Java 9
"C:\Program Files\Java\jdk1.8.0_161\bin\java" - запуск приложения на Java 9
Для того, чтобы избежать вашей проблемы, приложение может поставляться вместе с JRE, для которого оно разрабатывалось.

если можно тупой вопрос, где следует прописывать импорты к программам ? Прям в коде в главном классе ? полное имя класса выглядит так java.util.ArrayList. Например import java.util.ArrayList позволит использовать класс, не указывая пакеты: ArrayList. Импорт не подключает новый класс к твоей программе, а только позволяет указывать сокращееный вариант имени класса. Ты можешь не писать import и использовать полные имена: java.util.List<String> list = new java.util.ArrayList<>();

можно, если осторожно :)

а если серьезно, то к сожалению приходится почти все время "держать" несколько версий в связи с неполной совместимостью.

как уже упоминалось в комментариях, основную (не обязательно самую свежую) версию вы прописываете в путях, а другие используете в загрузчиках или ярлыках конкретных приложений.

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


Некоторое время назад я написал одну статью 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, и мы можем установить его с помощью следующих команд:

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

Преступность

Для использования Java Друзья, разработанные языком, могут столкнуться с этой ситуацией, иногда хотят учиться и исследовать Java Некоторые новые функции, предоставляемые последней версией, такие как Java 11 Но вы не можете установить его на свой собственный компьютер, потому что ваша команда использует старую версию (в настоящее время мы использовали Java 8 ), Вы не хотите влиять на текущий проект. Или вы поддерживаете и разработав несколько проектов, и эти разные проекты используются JDK Версия отличается, такая как используемые старые проекты JDK 8 И новые проекты, которые вы собираетесь использовать новую версию JDK 11 Эти условия должны быть установлены на компьютере. JDK И он должен быть в состоянии легко переключаться между несколькими версиями. Главный герой должен быть введен сегодняSDKMAN Он может очень хорошо решить вышеуказанную проблему, что обеспечивает управление несколькими версиями на нескольких версиях на одном компьютере. Следует отметить, что этот инструмент доступен только для классов. Unix Система (например, MAC OSX, Linux, Cygwin, Solaris, FreeBSD и т. Д.).

Введение в СДКМАН

Прямая ссылкаSDKMan Введение официального сайта выглядит следующим образом:

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates.

Проще говоря, он предоставляет возможность управлять несколькими версиями комплекта разработки, а также предоставлять несколько интерфейсов командной строки, чтобы сделать нас удобную установку, переключение версию, удаление версий и список дисплея. О SDKMan Также есть несколько баллов следующим образом:

  1. SDKMan Разработано сообществом открытого исходного кода, свободно использовать.
  2. SDKMan Использовать bash Написано, его необходимо установить только в вашей системе. curl с участием zip / unzip Команда может быть.
  3. SDKMan Может JVM Установите около 29 комплектов разработки программного обеспечения, такие как Java 、 Groovy 、 Scala 、 Kotlin 、 Gradle 、 Maven 、 Spark 、 Spring Boot Ждать.
  4. SDKMan Может автоматически обработать помощь нам настроить *_HOME(e.g.:JAVA_HOME) с участием PATH Переменные среды, поэтому нам не нужно беспокоиться о настройках этих переменных среды после переключения.

Установите SDKMAN

SDKMan Может работать в любом классе Unix В системе нам нужно только ввести следующую команду в командной строке для установки:


Затем сделайте следующую команду, загрузите файл sdkman-init.sh Мы можем пройти после текущей среды. sdk version Чтобы убедиться, что это успешно, вы также можете пройти sdk help Отображение команды sdk Использование команды и помощь ( PS: Вы можете установить Cygwin или Git Bash Run или выше для друзей, которые используют среду Windows. )。


Установите JDK, используя SDKMAN

Я уже ввел это, SDKMan Поддержка до 29 управлений пакетов по разработке программного обеспечения, мы также можем использовать sdk list Команда для просмотра полного списка поддержки, эта статья в основном вводит Java Связанный контент, может передавать команду sdk list java Для просмотра установки поддержки Java версия.


Установите следующую команду Java 11 :

Эта команда будет стоить некоторое время, потому что она загрузит соответствующую версию на нашем компьютере. JDK После завершения выполнения SDKman Автоматически настроит его JAVA_HOME с участием PATH Равные переменные среды могут пройти Java -version Проверка команд.


Теперь, если проверка Java Версия JAVA_HOME Переменные среды можно увидеть Java Версия была обновлена 11.0.7 。


Вы можете использовать следующую команду для установки использования по умолчанию. JDK версия.

Point Sdkman на установленную версию Java

Если вы устанавливаете его SDKMan Ранее локальный компьютер был установлен. JDK Версия, по умолчанию не является неузнаваемой, то вам нужно сделать следующую конфигурацию, чтобы позволить SDKMan Определите установленную версию, первый, первый шаг, вы должны найти вас первым Java Установите каталог, я локальный Mac Установка каталога /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk И используйте команду ln -s Прийти на Java Установите каталог установлен символической ссылкой.

point-sdkman-existing-installd-version.jpg

Несколько примеров переключения версии JDK

SDKMan Команда sdk use java <version_want_to_use> Переключение между несколькими версиями, используйте sdk use java jdk1.8.0_181.jdk Команда использовать ранее установленные Java 8 。


Используйте команду sdk use java 11.0.7.hs-adpt Чтобы установить версию Java 11 。


Что обратить внимание: используйте команды sdk use java <version> Только когда текущий сеанс действителен, если вы выключите терминал и откройте его снова, вы будете использовать ранее установленную версию, вы не измените свою локальную версию, вы можете использовать ее. sdk default java <version> Настроить постоянный вступление в силу.

Как удалить указанную версию JDK

Если вы хотите удалить любой установленный JDK Версия, такая как: 11.0.7.hs-adpt Вы можете использовать следующую команду для удаления:

На данный момент, если вы хотите передать это снова SDKMan Удалите версию, не заново загрузите снова, подскажу Found a previously downloaded java 11.0.7.hs-adpt archive. Not downloading it again. Поскольку предыдущая операция удаления на самом деле не удаляет файл сжатого исходного сжатого пакета с вашего компьютера.

Intellij Idea использует SDMAN для установки JDK

SDKMan Все установлено JDK Все в каталоге .sdkman/candidates/java/ Вы можете быть в вашем нынешнем пользователе home Смотрите папку под папкой (Note - это скрытая папка).

show-sdkman-directory.jpg

В IntelliJ IDEA Открыть любой Java После проекта вы можете нажать Command + : Кнопка ярлыков открывает окно структуры проекта, Project SDK Модуль выберите новый JDK Введите вам нужно JDK Версия SDKMan Путь в середине.


Так как .sdkman Нелегко найти скрытую папку, вы можете использовать следующую команду для создания не скрытой папки, указывающей ее.

Читайте также: