Действительно ли "альтернативы" для управления 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 будут указывать на одну и ту же версию.

  1. Разархивируйте ваш новый jdk в ваше обычное расположение java (/opt/local/java/jdk_1.X_XX)
  2. Симлинк ваш текущий jdk

    ln -s /opt/local/java/jdk_1.X_XX current
    
  3. В ~/.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
    
  4. Теперь, если вам нужно переключить 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 не только содержат команды) с разными версиями, так как каждая версия регистрирует вещи, которые должны быть связаны символами.

Другие вопросы по тегам