Проблема, изменяющаяся версию Java с помощью альтернатив

Я не совсем уверен, как я попал в эту беду, но по некоторым причинам я не могу изменить текущую версию Java с помощью альтернатив. Я могу работать, альтернативы - конфигурируют Java и вводят мой выбор, но когда я повторяю номер версии или для Java или для javac, он плюет, отступают 1.5 каждых раза, когда (несмотря на альтернативы, показывающие, что текущая версия 1.6). Сервер, с которым я работаю, выполняет RHEL5, между прочим.

Я проверил, что пути, используемые в альтернативах, указывают на корректные каталоги. Вот некоторый вывод от моей сессии:

[brilewis@myserver] $ sudo/usr/sbin/update-alternatives - конфигурирует Java

Существует 3 программы, которые обеспечивают 'Java'.

Команда выбора

** 1/usr/lib/jvm/jre-1.4.2-gcj/bin/java
+ 2/usr/java/jdk1.5.0_10/bin/java
3/usr/java/jdk1.6.0_16/bin/java

Войдите для хранения текущего выбора [+], или число выбора типа: 3

[brilewis@myserver] $ Java - версия

Java(TM) 2 Runtime Environment версии "1.5.0_10" Java, Standard Edition (создают 1.5.0_10-b03), HotSpot(TM) Server VM Java (создают 1.5.0_10-b03, смешанный режим),

[brilewis@myserver] $ sudo/usr/sbin/update-alternatives - конфигурирует Java

Существует 3 программы, которые обеспечивают 'Java'.

Команда выбора

** 1/usr/lib/jvm/jre-1.4.2-gcj/bin/java
2/usr/java/jdk1.5.0_10/bin/java
+ 3/usr/java/jdk1.6.0_16/bin/java

Войдите для хранения текущего выбора [+], или число выбора типа:

ОБНОВЛЕНИЕ: следующее является выводом echo $PATH:

/usr/java/jdk1.5.0_10/bin:/usr/local/apache-ant-1.7.1/bin:/usr/local/apache-tomcat-6.0.24:/usr/kerberos/bin:/usr/local/bin:/bi n:/usr/bin:/usr/NX/bin:/home/brilewis/bin

ОБНОВЛЕНИЕ (4/26/10): Я следовал за предложением Bert и удалил JAVA_HOME из var среды ПУТИ в/etc/profile. После выполнения этого я смог использовать альтернативы для изменения версии Java. Единственная проблема - это, когда я пытаюсь работать javac, Я добираюсь "-удар: javac: команда, не найденная". Этого не происходит, когда версия установлена на 1,5.

14
задан Brian 26 April 2010 в 17:45
поделиться

3 ответа

Единственный способ решить проблему - это начать все сначала, удалив / var / lib / alternatives / java и снова установив каждый JDK. Я сделал то же самое для javac и jar. После этого я смог без проблем переключаться между версиями.

3
ответ дан 1 December 2019 в 06:35
поделиться

альтернативы работают путем изменения символической ссылки в каталоге / usr / bin . Однако, если ваш путь содержит действующий исполняемый файл ранее в пути, он будет использоваться вместо него.

В этом случае, судя по вашим предыдущим комментариям, похоже, что /usr/java/jdk1.5.0_10/bin находится где-то на пути и его следует удалить.

Для оболочки BASH путь обычно задается в ~ / .bashrc или (что менее вероятно?) ~ / .bash_profile

3
ответ дан 1 December 2019 в 06:35
поделиться

Обновлено с дополнительными пояснениями

  1. Проверьте, какой исполняемый файл java действительно запущен, например

    $ type java

    Если здесь отображается что-то иное, кроме / usr / bin / java , то у вас, вероятно, есть конкретная JRE / JDK, жестко запрограммированная на вашем пути. Это нормально, но вы не сможете использовать изменения версии Java с использованием альтернатив RH для любой учетной записи, которая жестко закодирует конкретный JRE / JDK в своем PATH таким образом. Однако другие пакеты / учетные записи (например, системные процессы), которые не указывают жестко конкретную версию JDK в свой путь, будут использовать альтернативу -специализированную JRE.

  2. Проверьте переменную среды JAVA_HOME , например

    $ echo $ JAVA_HOME

    Если это установлено, это иногда будет указывать исполняемый файл java на другой JRE / JDK, независимо от того, где находится сам исполняемый файл java . Опять же, нет ничего необычного в том, чтобы установить это, но вы не сможете использовать изменения версии Java с использованием альтернатив RH для любой учетной записи, которая жестко кодирует другой JAVA_HOME.

С учетом всего сказанного, для разработки в моей учетной записи я обычно устанавливаю определенный JDK в своем пути и устанавливаю JAVA_HOME так, чтобы он указывал на конкретный JDK, а не полагался на системные настройки. Альтернативы RH позволяют контролировать, какую версию Java используют другие пакеты, но для моей собственной разработки я предпочитаю явно указывать на Java, которую я хочу использовать.

1
ответ дан 1 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: