Обновление-java-альтернативы против обновления-альтернативы --config java

В Ubuntu 12.04 LTS я установил JDK7 от Sun, Eclipse и Arduino IDE. Я хочу, чтобы Arduino использовал OpenJDK 6, а Eclipse - JDK 7 от Sun.

Насколько я понимаю, мне нужно вручную выбрать, какую Java использовать, перед запуском каждого приложения. Это привело меня к update-java-alternatives -l команда. Когда я запускаю это, я вижу только следующее:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

но когда я бегу update-alternatives --config java Я вижу следующее:

*0  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   auto mode1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

Я не понимаю, почему update-java-alternatives не отображает те же 3 параметра. Я также не понимаю, как переключаться между OpenJDK6 и JDK7. Как я могу использовать OpenJDK6 для разработки Arduino и Sun JDK7 для разработки Eclipse / Android?

sudo update-alternatives --config java

Настраивает значение по умолчанию для программы "java". Это виртуальная машина Java.

sudo update-alternatives --config javac

Настраивает компилятор Java по умолчанию.

Вы также можете видеть это, потому что в первой команде перечислено множество папок "JRE" (Java Runtime Environment), а программа называется просто "java".

Если я проверю, какая версия используется, выполнив командуjava -versionилиjavac -version, я вижу, что каждая команда изменяет используемую программу.

Однако, используя update-java-alternatives с изменением версии JDK оба программы для меня. Используя первые команды, вы можете использовать виртуальную машину Java и компилятор Java из разных JDK.

обновление-java-альтернативы требует наличия файла с расширением .jinfo в каталоге /usr/lib/jvm. Пакет opendjk поставляется с файлом .jinfo, jdk Oracle (ранее Sun) - нет. В качестве альтернативы вы настраиваете альтернативы без обновления-java-alternatives:

Например, чтобы добавить java из jvm-каталога /usr/lib/jvm/jdk-12.0.1 (каталог по умолчанию пакета Debian Oracle) с приоритетом 2082, используйте следующую команду:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

Что касается переключения для различных сред разработки:

Вы говорите о запуске самой IDE с разными версиями Java или с использованием разных версий в среда разработки для компиляции и запуска вашего приложения?

Для 1.: Вы можете указать, какую JVM использовать в eclipse.ini, как описано здесь. Я не знаю, как это сделать для Arduino IDE.

>>>>Для 2.: В Eclipse вы можете выбрать JRE/JDK для использования в Window - Preferences - Java - Installed JREs. И в разделе Java - Compiler вы можете выбрать более старую версию Java, если хотите.

РЕДАКТИРОВАТЬ:Эта страница DigitalOcean также есть очень хорошее объяснение всего, что связано с Java в Ubuntu.

update-java-alternatives это программа для обновления альтернатив для jre/jdk установки.

update-alternatives это система управления символическими ссылками для Linux (я уверен, что здесь мало новостей).

Вы можете и действительно должны использовать оба update-java-alternatives и update-alternatives вместе.

Во-первых, убедитесь, что все альтернативы настроены правильно. java и javac - это лишь некоторые из них. Есть javadoc, rmic, serialver и другие, заменяя вышеуказанные переменные на: native2ascii и /opt/jdk1.8.0_40/bin/native2ascii должен сообщить, установлена ли и/или выбрана альтернатива.

Когда все альтернативы настроены, вы можете создавать ссылки в /usr/lib/jvm к вашей ручной установке.

Для того, чтобы настроить update-java-alternatives вы должны использовать скрытый файл с тем же именем, что и ваш каталог, но с префиксом . (точка).

Надеюсь, это поможет.

Библиография

man -S 8 update-java-alternatives

http://tech .lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu

Просто примечание (слишком большое для комментария). Если вам нужно автоматически переключитесь на Java 8 (компилятор 1.8), в однострочном, например, для скрипта или набора тестов непрерывной интеграции, вы можете запустить

sudo update-java-alternatives -s $(sudo update-java-alternatives -l | grep 8 | cut -d " " -f1) || echo '.'

Он автоматически выберет любую доступную версию java 8 и установит ее с помощью команды update-java-alternatives.

То || echo '.' в конце просто гарантирует, что команда вернет успех, потому что, как ни странно update-java-alternatives по умолчанию возвращает ошибку (1). Вы можете пропустить его, если вам это не нужно для набора тестов.