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

97

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

Из моего понимания мне нужно вручную выбрать, какую 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 mode
1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode
2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode
3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

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

Стэн Смит
источник

Ответы:

127

sudo update-alternatives --config java

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

sudo update-alternatives --config javac

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

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

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

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

update-java-alternatives требует наличия файла с расширением .jinfo в каталоге / usr / lib / jvm. Пакет opendjk поставляется с файлом .jinfo, а jdk для Oracle (ранее Sun) - нет. В качестве альтернативы вы настраиваете альтернативы без update-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 или об использовании разных версий в IDE для компиляции и запуска приложения?

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

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

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

Бенджамин Маурер
источник
15

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вы должны использовать скрытый файл с тем же именем, что и ваш каталог, но с префиксом a. (точка).

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

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

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

fmmarques
источник