Як визначити JAVA_HOME на Debian / Ubuntu?


95

На Ubuntu можливо мати кілька JVM одночасно. Вибір за замовчуванням вибрано за допомогою update-alternatives. Але це не встановлює JAVA_HOMEзмінну оточення через політику debian .

Я пишу сценарій запуску (bash), який запускає програму java. Ця програма Java потребує JAVA_HOMEзмінної середовища. Тож як отримати шлях до СП, який зараз обраний update-alternatives?

Відповіді:


137

Для JRE щось подібне повинно зробити трюк:

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

17
Мені потрібен будинок JDK замість JRE, але я отримав це за допомогою: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") Дякую!
Witek

коли я спробував команду echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), вихід був, /usr/lib/jvm/java-7-oracle/jre/а ні/usr/lib/jvm/java-7-oracle/
Sumit Ramteke

Код, наведений у rsaddey, працює правильно
Sumit Ramteke

43

Рішення Danadam може бути легко прийнято для отримання шляху JDK (тобто не JRE), як потрібно:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Шукає компілятор Java Java (замість java), включений у JDK (але не JRE).
  • Не має задніх сторінок / (знімається sed s: / bin ... замість s: bin ...)

12

export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

У .bashrcмені було зручно.


9

Отже, ти кажеш, що ця команда для тебе нічого не робить?

sudo update-alternatives --config java 

2
Припустимо, це встановити ваш JAVA_HOME? Я виявив, що update-java-альтернативи - це кращий спосіб оновити Java, оскільки альтернативи update не оновлюють усі пов'язані з Java альтернативи. Дивіться askubuntu.com/questions/141791
Джеймс Макмахон

Правда, але я зіткнувся з випадками Linux, які мали альтернативи оновлення, але не встановили альтернативи update-java.
djangofan

3

Я встановив java с

sudo apt-get install openjdk-7-jre-headless

а потім знайти місцеположення

ls -al /etc/alternatives/java

2

Як розширення danadams відповідь:

Перш за все, встановіть другий Java JRE як 3-й варіант java, з пріоритетом "3":

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

Потім ви можете перелічити їх:

update-alternatives --list java

Ви можете встановити альтернативу вручну, скориставшись цим:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

Потім ваш сценарій може встановити його на льоту, як-от так:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Це краще ілюструє, що робить команда 'sed'. Хоча вам все-таки потрібно встановити посилання на javaw і javac тощо, також робити це окремо.


1

Нещодавно я створив підручник на форумі Ubuntu про те, як встановити останню версію JRE / JDK з веб-сайту Java. Він також висвітлює, як увімкнути його на загальний рівень, додавши розташування JRE / JDK до змінної PATH. Якщо вам подобається, ви також можете додати JAVA_HOME до сценарію, згаданого в кінці теми.

Перевірте це: http://ubuntuforums.org/showthread.php?t=1437100


1

Якщо java налаштована update-alternativesабо додана до вашої змінної PATH вручну, тоді жорстке кодування "/usr/bin/java"не потрібно. Я використовую це рішення у своєму .bashrc:

export JAVA_HOME=$(readlink -m $(which java)/../..)

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