Як встановити версію Java за замовчуванням?


123

Я дотримувався всіх інструкцій, викладених у цьому питанні , але зіткнувся з деякими проблемами з останньою його частиною.

У мене фактично є версія 6.22 Java, і я хотів би оновити її до версії 6.30.

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

Для наочності тут виводиться, якщо я роблю lsв режимі /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)

Існує ще проблема , якщо Ірун javac -versionце дає мені стару версію встановленої:

$ javac -version
javac 1.6.0_22

І якщо я використовую тестер за цим посиланням, він скаже мені, що це версія

Java Version 1.6.0_22 from Sun Microsystems Inc.

Що відбувається не так?

Схоже, що Java Runtime Environment оновився, але 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.

Якісь ідеї?


@fossfreedom Я не пробував цього, тому що я вважав, що це не дуже гарна ідея, оскільки це чітко написано для завантаження з Java 5 на 6, чи варто все-таки?
Маттео

1
hmmm - можливо, ви можете заплутати, що сценарій webupd8 0,5b? Це версія сценарію - вона не посилається на версію java. Спробувати. Подивимося скріншот, як виглядає вікно під час запуску сценарію.
fossfreedom

@fossfreedom Так, це мене зовсім збентежило; DI запустив сценарій! Перевірте відповідні редакції! багато чого допомагає мені ..
Маттео

як дуже дивно ... ніколи з цим не стикався. У будь-якому випадку - подивіться на відповідь трохи нижче - ви повинні мати можливість, sudo update-alternativesяк на прикладі.
fossfreedom

@fossfreedom знову оновлено запитання!
Маттео

Відповіді:


103

Повторіть своє перше запитання:

можливо, ви можете заплутати, що сценарій 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/

Сам по собі це просто змінює компілятор - див. Відповідь нижче щодо update-java-альтернативи, яка обробляє перемикання всіх альтернатив, пов’язаних з 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.


25

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


2
Я спробував update-java-alternativesі тоді java -versionбув правильний, але посилання $JAVA_HOMEвсе ще помилялось ... Я змінив цю вручну, але мені цікаво, чи щось update-java-alternativesу цьому відношенні не вистачає .
Алексіс Вілке

6

У 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 is / usr / bin / java slave javadoc is / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - пріоритет 0 раб javadoc: /opt/jdk1.8.0_74/bin/javadoc

Змініть /opt/jdk1.8.0_74/ за допомогою dir, де встановлено ваш jdk.


0

Відкрийте /etc/environmentу будь-якому текстовому редакторі та додайте наступний рядок:

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

- шлях до Java може бути різним.
Використовуйте джерело для завантаження змінних, виконавши цю команду:

source /etc/environment

Потім перевірте змінну, виконавши цю команду:

echo $JAVA_HOME

За допомогою цього набору шляху запустіть цю команду:

sudo  update-java-alternatives --list

Виберіть версію Java за замовчуванням.

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