Как установить версию Java по умолчанию?

125

Я следовал всем инструкциям, изложенным в этом вопросе , но столкнулся с некоторыми проблемами в последней части.

У меня фактически есть версия 6.22 Java и я хотел бы обновить до версии 6.30.

Таким образом, после перемещения извлеченного каталога java-6-oracleв /usr/lib/jvmя не знаю, что делать, так как сценарий, который указан в ответе выше, обновляется с java 5 до java 6.

Для ясности, вот вывод, если я делаю lsв DIR /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

Что мне теперь делать?


ДОБАВЛЕННАЯ ЧАСТЬ

По предложению @fossfreedom я все равно запустил скрипт и фактически обновил java-версию.

На самом деле, если я запускаю команду, java -versionвывод будет следующим:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

Есть еще проблема , если Irun javac -versionвыдает мне установленную старую версию:

$ javac -version
javac 1.6.0_22

И если я использую тестер по этой ссылке, он скажет мне, что версия

Java Version 1.6.0_22 from Sun Microsystems Inc.

Что не так?

Кажется, что среда выполнения Java обновилась, а компилятор Java и плагин Java для браузера не обновились.

Как я могу их обновить?


ДРУГАЯ ДОБАВЛЕННАЯ ЧАСТЬ

sudo update-alternatives --config java вернет следующий вывод

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

Press enter to keep the current choice[*], or type selection number:

это имеет смысл с тем фактом, что JRE правильно обновлена ​​до версии 6.31, проблемы связаны с компилятором Java и плагином браузера Java.

Есть идеи?

Matteo
источник
@fossfreedom Я не пробовал, потому что подумал, что это не очень хорошая идея, так как он написан специально для загрузки с Java 5 на 6, так или иначе?
Маттео
1
хммм - возможно, вас смущает, что скрипт webupd8 имеет размер 0.5b? Это версия скрипта - это не относится к версии Java. Попробуйте. Давайте посмотрим на скриншот того, как выглядит окно при запуске скрипта.
fossfreedom
@fossfreedom да, это меня смутило; я запускал сценарий! проверьте правки! Спасибо за помощь.
Matteo
как очень странно ... никогда не сталкивался с этим. Во всяком случае - посмотрите на ответ чуть ниже - вы должны быть в состоянии sudo update-alternativesв соответствии с примером.
fossfreedom
@fossfreedom снова обновил вопрос!
Маттео

Ответы:

104

Ваш первый вопрос:

возможно, вас смущает, что скрипт webupd8 равен 0.5b. Это версия скрипта - это не относится к версии Java.

В дополнение к настройке версии Javac.

Я подозреваю, что вам нужно явно указать путь к компилятору javac

т.е.

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

с последующим:

sudo update-alternatives --config javac

Что касается настройки плагина Java Chrome.

Основной вопрос:

Как мне установить Oracle JDK 6?

включает в себя эту информацию - так как ваша структура папок немного отличается, ваша команда ссылки должна быть:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/
fossfreedom
источник
Само по себе это просто меняет компилятор - см. Ответ ниже для update-java-alternatives, который обрабатывает переключение всех связанных с java альтернатив, что в моей системе равно 82.
Грег
55

Увидеть это ; бегать

sudo  update-java-alternatives --list

составить список всех установок Java на компьютере по имени и каталогу, а затем запустить

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

выбрать, какой JRE / JDK использовать.

Если вы хотите использовать разные JDK / JRE для каждой задачи Java, вы можете запустить альтернативы обновления для настройки одного исполняемого файла Java за раз; Вы можете запустить

sudo  update-alternatives --config java[Tab]

чтобы увидеть команды Java, которые можно настроить (java, javac, javah, javaws и т. д.). А потом

sudo  update-alternatives --config [javac|java|javadoc|etc.]

свяжет эту задачу / команду Java с конкретным JDK / JRE.

Вам также может понадобиться установить JAVA_HOME для некоторых приложений: из этого ответа вы можете использовать

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

для JRE или

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

для JDK.

WillC
источник
25

Я думаю, вы должны взглянуть на update-java-alternativesкоманду из java-commonпакета и *.jinfoфайлы, используемые ею. При этом вы сможете полностью переключаться между установками Java (независимо от JDK, JRE, ...).

Йоханнес Вахтер
источник
2
Я попытался, update-java-alternativesа затем java -versionбыл верным, но ссылка $JAVA_HOMEбыла все еще неправильной ... Я изменил это вручную, но мне интересно, есть ли что-то упущенное в этом update-java-alternativesотношении.
Алексис Уилк
7

В Ubuntu / Linux вы можете переключить версию Java, используя

update-alternatives --config java

Но перед этим вам нужно установить версию.

Вы можете использовать этот скрипт (./install-java.sh) для установки нескольких JVM

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

Поместите этот скрипт в папку, где распакованы JVM, и запустите:

/opt/install-java.sh

Следующее использование:

update-alternatives --config java
Рикардо Ил Руфино
источник
1

Если вы собираетесь вручную установить альтернативы для javac javaws javadoc или любых других связанных с java команд, вы можете сделать их рабами альтернативы java.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - лучшая версия ссылки в автоматическом режиме - /opt/jdk1.8.0_74/bin/java ссылка в настоящее время указывает на /opt/jdk1.8.0_74/bin/java ссылка java - это / usr / bin / java ведомый javadoc - / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - javadoc подчиненного приоритета 0: /opt/jdk1.8.0_74/bin/javadoc

Измените /opt/jdk1.8.0_74/ на каталог, в котором установлен ваш jdk.

Тьяго
источник
0

Откройте /etc/environmentлюбой текстовый редактор и добавьте следующую строку:

JAVA_HOME="usr/lib/jvm/open-jdk 

- Путь Java может быть различным.
Используйте source для загрузки переменных, выполнив эту команду:

source /etc/environment

Затем проверьте переменную, выполнив эту команду:

echo $JAVA_HOME

С этим установленным путем выполните эту команду:

sudo  update-java-alternatives --list

Выберите версию Java по умолчанию.

Mwongera808
источник