update-java-альтернативи vs update-alternative --config java


96

На Ubuntu 12.04 LTS я встановив JDK7, Eclipse та ID ID Arduino від Sun. Я хочу, щоб 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 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?

Відповіді:


126

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 з різних JDK.

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

Наприклад, щоб додати 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, який буде використовуватися у вікні -> налаштування -> Java -> встановлені JRE. І під Java -> Компілятор ви можете вибрати старішу відповідність Java, якщо бажаєте.

EDIT: На цій сторінці 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.