2

Я пытаюсь установить JAVA_HOME в ОС Ubuntu. Я скопировал jdk 1.7 в /usr/lib/jvm и установил JAVA_HOME в /etc/profile file.

Содержимое папки /usr/lib/jvm :

shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java        java-1.6.0-openjdk       java-6-openjdk         java-6-openjdk-i386  jdk1.7.0_01
java-1.5.0-gcj-4.6  java-1.6.0-openjdk-i386  java-6-openjdk-common  java-7-openjdk-i386

и последние несколько строк файла /etc/profile :

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin

После завершения всего этого, когда я запускаю команду java -version я получаю следующий вывод:

shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

и когда я запускаю команду ls -lah я получаю следующий вывод:

shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java

Может кто-нибудь сказать мне, что мне не хватает? Почему Ubuntu все еще указывает на открытие jdk, а не на мой jdk 7?

PS: я видел этот похожий вопрос и ответы на него, но этот вопрос относится к ОС Windows, а не к Ubuntu, поэтому я публикую этот похожий вопрос для Ubuntu.

3 ответа3

3

Вы устанавливаете переменную среды JAVA_HOME, а затем используете ее для установки своего PATH. Однако заданный вами путь также состоит из существующего пути. По сути, вы просто добавили что-то еще к существующему пути.

Путь к вашему JDK1.7 добавляется в конце пути. Когда вы набираете 'java --version' в командной строке, система ищет путь от начала до конца, пока не найдет путь с командой 'java'. Поэтому то, что вы видите, - это вывод версии из одной из ваших других версий Java.

Что я обычно делаю в Ubuntu, так это посмотрите на мой путь:

echo $PATH

а затем найдите возможные пути JVM в начале. В этот момент у вас будет несколько вариантов исправить это:

  1. Создайте символическую ссылку, указывающую систему на ваш новый путь Java.

  2. Удалите старую версию Java и удалите ее с вашего пути.

Я бы выбрал вариант 2. Это менее запутанно, чтобы просто избавиться от того, что вам не нужно.

2

Я лично столкнулся с точно такой же проблемой на новой установке Ubuntu 12.04. Все, что мне нужно было сделать, это удалить конкретный пакет, используя следующую команду:

sudo apt-get remove openjdk-6-jre-headless

Это удалило ссылку в /etc /alternatives и обновило ее до установленной Java 1.7

Просто хотел поделиться, как это завершает пункт 2 в ответе jmort253.

1

У меня была такая же проблема, и ответ скрыт в ПУТИ:

Запуск "$ env | grep java" показывает:

PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14

но работает "Java-версия" по-прежнему показывают:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

Я понял, что мой PATH имеет "/usr/bin" перед "/java/jdk1.6.0_14/bin" и выполнил "ll /usr/bin | grep java", который я получил:

lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*

Я изменил символическую ссылку на правильную, и проблема решена. Вы также можете изменить порядок в пути:

от

export PATH=$PATH:$JAVA_HOME/bin

в

export PATH=$JAVA_HOME/bin:$PATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .