Где я могу найти Java SDK в Linux после его установки?

185

Я установил JDK с помощью apt-get install, но я не знаю, где находится моя папка jdk. Мне нужно установить путь для этого. У кого-нибудь есть подсказка о местоположении?

dinesh707
источник
1
Распространение Linux: Debian 2.6.26
dinesh707
Попробуйте /usr/local/java/для оригинальных загруженных дистрибутивов Oracle.
Зон

Ответы:

385

Это немного зависит от вашей системы пакетов ... если javaкоманда работает, вы можете ввести readlink -f $(which java)местоположение команды java. В системе OpenSUSE, в которой я сейчас нахожусь, она возвращается /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(но это не та система, которая использует apt-get).


В Ubuntu это выглядит так, как будто это /usr/lib/jvm/java-6-openjdk/ для OpenJDK, а также в каком-то другом подкаталоге /usr/lib/jvm/для Suns JDK (и, думаю, других реализаций).

Debian такой же.


Для любого данного пакета вы можете определить, какие файлы он устанавливает и куда он их устанавливает, выполнив запрос к dpkg. Например, для пакета «openjdk-6-jdk»:dpkg -L openjdk-6-jdk

Пауло Эберманн
источник
1
orth просматривает также / usr / java на некоторых установках, которые я видел
jlb83
Если вы хотите добавить путь JDK в Android Studio, добавьте этот / usr / lib / jvm / java-8-oracle /
Rohit Rokde
3
Кажется , мой путь /usr/lib/jvm/java-7-openjdk-amd64.
Эйнверн
2
Я думаю, что readlink как данность является наиболее элегантным (и эффективным), но я предлагаю readlink -f $(which javac) - обратите внимание на 'c' на случай, если на одной и той же машине есть странное сочетание JDK и JRE. JDK включает в себя компилятор (javac), а JRE - нет. Однако, если путь неверен, это не удастся, и вы можете попробовать это: find /usr/java -wholename '*ava/jdk*' -pruneкак я заметил в комментарии ниже.
Стивен легко развлекается
@Winnemucca Это работает для меня, вы можете найти, где находится Java, а затем вы можете найти, где путь JDK.
Эйнверн
45
update-java-alternatives -l

скажет вам, какая реализация Java по умолчанию для вашей системы и где в файловой системе она установлена. Проверьте руководство для большего количества вариантов.

forcefsck
источник
7
Это специфично для Debian (по крайней мере). Другие дистрибутивы могут не иметь этого
dequis
2
@dequis, это ответ, специфичный для Debian, поскольку упомянутый вопрос apt-getи дистрибутив будут Debian 2.6.26. AFAIK, он должен быть одинаковым для всех производных Debian.
forcefsck
2
Я просто указываю на это другим людям. Я знаю, что это действительно для этого конкретного вопроса.
dequis
1
обновление-альтернативы - список |
Греп
30
$ which java 

должен дать вам что-то вроде

/usr/bin/java
Суррик
источник
2
правда.
Могу
6
Это на самом деле не указывает на полный JDK. 1. Это символическая ссылка, и даже если вы читаете символическую ссылку, двоичный файл также не находится в JDK. Например, если я запускаю команду, readlink -f $(which javac)она печатает /usr/lib/jvm/java-8-oracle/bin/javac. Эта папка не является JDK. Общий кислотно-щелочной тест, чтобы увидеть, является ли JDK проверкой, $JAVA_HOMEсодержит ли ток путь lib/tools.jar. В актерском составе /usr/lib/jvm/java-8-oracle/binэто не так, поэтому это не JDK.
Зомби
В Centos / RHL Это то, что я предпочитаю находить JDK (если он установлен), find /usr/java -wholename '*ava/jdk*' -prune но поведение зависит от того, говорите ли вы об OpenJDK или Oracle Java и как он был установлен в первую очередь.
Стивен легко развлекается
12

Этот вопрос будет перенесен, но вы можете сделать следующее

which javac

или

cd /
find . -name 'javac'
Эндрю Т Финнелл
источник
Мне нравится второй вариант - простой и полезный, если у вас есть несколько JRE / JDK и вы хотите найти их все.
Амос М. Карпентер
"find / -name 'javac'" менее набирает текст, но требует привилегий администратора (root), иначе вы получите много сообщений с отказом в разрешении.
Стивен легко развлекается
9

Используйте найти, чтобы найти его. Должно быть /usrгде-то под :

find /usr -name java

Если при запуске команды слишком много сообщений «Отказано в доступе», которые затемняют фактические найденные результаты, просто перенаправьте stderr в / dev / null

find /usr -name java 2> /dev/null
Брент Уорден
источник
1
Если не root (admin), вы получите много сообщений об отказе в разрешении.
Стивен легко развлекается
7

Другой лучший способ найти путь к папке Java - использовать alternatives команду в Fedora Linux (я знаю, что это для Ubuntu, но я попал в этот пост из Google только по заголовку). Просто хочу поделиться тем, как люди, как я, ищут ответы на вкус Fedora.

Для отображения всей информации о Java

alternatives --display java
iankits
источник
1
Это сработало для меня, возвращая / usr / java / jdk- [версия] на Fedora
Сина Мадани
3

Трехэтапный процесс: во-первых: откройте терминал-> $ whereis java он выдаст такой результат: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

Второе: ls -l /usr/bin/java это даст результат, как это: lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

Третье: ls -l /etc/alternatives/java вывод - это путь JDK: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Анубхав Гупта
источник
2

Просто попробуйте:

Это / usr / local / java / jdk [версия]

Ашансу Пант
источник
1

команда: sudo update-alternatives --config javaнайдет полный путь всех установленных версий Java

Hasan
источник
1

Этот вопрос все еще кажется актуальным, и ответ, кажется, движущаяся цель.

В моей системе Debian (Buster):

> update-java-alternatives -l
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64

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

Фактический каталог java-11-openjdk-amd64, с другой символической ссылкой default-java. Существует также openjdk-11каталог, но, похоже, он содержит только файл source.zip.

Учитывая это, ТОЛЬКО для Debian, я думаю, что лучшее значение для использования /usr/lib/jvm/default-java , так как это всегда должно быть допустимым, даже если вы решите установить совершенно другую версию Java или даже поменять поставщиков.

Обычная причина, по которой вам нужно знать путь, заключается в том, что какое-то приложение хочет его, и вы, вероятно, не хотите, чтобы это приложение сломалось, потому что вы выполнили обновление, которое изменило номера версий.

Страх Quixadhal
источник
0

в OpenSUSE 13.1 / 13.2 его: номер /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
версии может быть 1.7.x 1.8.x и т. д. проверьте версию установленного вами программного менеджера ...

Андре

Голландская слава
источник
0

В Linux Fedora30 доступно несколько версий полного java JDK, в частности имена пакетов:

java-1.8.0-openjdk-devel.x86_64 
java-11-openjdk-devel.x86_64

После установки они находятся в: /usr/lib/jvm

Чтобы выбрать местоположение / каталог полной JDK разработки (которая отличается от простой JRE среды выполнения), найдите записи:

ls -ld java*openjdk*

Вот два хороших варианта, это ссылки на конкретные версии, где вам нужно будет выбрать версию:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk
Грант Ростиг
источник
0

Это лучший способ, который работал для меня Выполнить эту команду: -

$(dirname $(readlink $(which javac)))/java_home
Маниш Шарма
источник