Действительно ли "альтернативы" для управления JDK лучше, чем Symlink и $PATH?
Я только что обновился до Fedora 16 (с fedora 12) и прочитал / мне сказали, что вместо того, чтобы настраивать различные JDK с помощью простой символической ссылки и устанавливать в моем $PATH эту символьную ссылку, я должен использовать инструмент альтернатив.
Что я не понимаю, так это то, как альтернативы лучше для управления вашим jdk, когда кажется, что вам нужно будет выполнить: альтернативы --config не только для 'java', но также и для всех вспомогательных инструментов (javac, javaws, jstack и т. Д.), Это кажется несчастным по сравнению с:
(Предположим, $PATH=/opt/local/java/current/bin:...)
rm /opt/local/java/current
ln -s /path/to/unpacked/jdkX /opt/local/java/current
Итак, мой вопрос:
Почему я слышал, что альтернативы - это правильный способ управления инструментами Java в более новых версиях Fedora, когда полностью переключать JDK кажется гораздо более громоздким? Мне только что сообщили плохую информацию, или я упускаю что-то важное об альтернативах?
(ПРИМЕЧАНИЕ: не стесняйтесь быть жестоким, если альтернативы явно лучше в некотором роде. Я знаю, что я в значительной степени не знаю об этом инструменте)
3 ответа
генеральный
Если вы знаете, что вам просто нужно поменять один или два инструмента (например, java и javac), альтернативы кажутся подходящими, так как они предназначены для управления версиями приложений.
Однако, если вы используете несколько инструментов разработки, которым может потребоваться набор значений JAVA_HOME или JDK_HOME, или если вы не знаете, какие из утилит jdk могут вызывать инструмент (ы), кажется, что вы экспортируете свой путь jdk в $JAVA_HOME, и добавление его к $PATH - более простой способ. Возможно, это не "правильный" способ, но он быстрее переключается между версиями java и более прозрачен, поскольку вы знаете, что все ваши утилиты jdk будут указывать на одну и ту же версию.
- Разархивируйте ваш новый jdk в ваше обычное расположение java (/opt/local/java/jdk_1.X_XX)
Симлинк ваш текущий jdk
ln -s /opt/local/java/jdk_1.X_XX current
В ~/.bash_profile ИЛИ ~/.bashrc добавить
JAVA_HOME=/opt/local/java/current export JAVA_HOME JDK_HOME=$JAVA_HOME export JDK_HOME PATH=$JAVA_HOME/bin:$PATH export PATH
Теперь, если вам нужно переключить JDKS, вы можете просто поменять символическую ссылку
rm /opt/local/java/current ln -s /opt/local/java/new_jdk_directory current
Ubuntu Specific
Похоже, что в UBUNTU эта проблема была решена с помощью update-java-alternatives, которая обновит все альтернативы для данной среды выполнения или комплекта разработки (JRE/JDK).
Альтернатива - отличный, простой и эффективный способ управления jdks. Вы можете переключиться на нужную версию, если хотите быстро. Если вы находите альтернативу трудной, я советую вам взглянуть на эту страницу, которая отлично объясняет альтернативы.
Система альтернатив позволяет вам использовать одну команду для управления символическими ссылками для всех этих команд одновременно, без необходимости добавлять что-то еще к вашему $PATH
, Он также будет обрабатывать изменения в списке вещей, которые должны быть связаны символами (включая вещи, которые не связаны с $PATH
; JDK не только содержат команды) с разными версиями, так как каждая версия регистрирует вещи, которые должны быть связаны символами.