Onde posso encontrar o Java SDK no Linux depois de instalá-lo?

185

Instalei o JDK usando o apt-get install, mas não sei onde está minha pasta jdk. Eu preciso definir o caminho para isso. Alguém tem uma pista sobre a localização?

dinesh707
fonte
1
Distribuição Linux: Debian 2.6.26
dinesh707
Tente /usr/local/java/distribuições originais baixadas do Oracle.
Zon

Respostas:

385

Isso depende um pouco do seu sistema de pacotes ... se o javacomando funcionar, você pode digitar readlink -f $(which java)para encontrar a localização do comando java. No sistema OpenSUSE, agora estou retornando /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(mas este não é um sistema que use apt-get).


No Ubuntu, parece que é /usr/lib/jvm/java-6-openjdk/ para o OpenJDK, e em alguns outros subdiretórios do /usr/lib/jvm/Suns JDK (e outras implementações também, eu acho).

O Debian é o mesmo.


Para qualquer pacote, você pode determinar quais arquivos ele instala e onde os instala, consultando o dpkg. Por exemplo, para o pacote 'openjdk-6-jdk':dpkg -L openjdk-6-jdk

Paŭlo Ebermann
fonte
1
Orth olhando em / usr / java também em algumas configurações que eu vi
jlb83
Se você é para adicionar o caminho JDK no estúdio android, adicione usr / lib / jvm / java-8-oracle / /
Rohit Rokde
3
Parece que meu caminho é /usr/lib/jvm/java-7-openjdk-amd64.
Einverne #
2
Eu acho que o readlink é o mais elegante (e eficiente), mas sugiro readlink -f $(which javac) - observe o 'c' caso haja uma estranha mistura de JDK e JRE na mesma máquina. O JDK inclui um compilador (javac) e um JRE não. No entanto, se o caminho não estiver correto, o que irá falhar e você pode tentar o seguinte: find /usr/java -wholename '*ava/jdk*' -prunecomo observo em um comentário abaixo.
Steven the Facilly Fun
@Winnemucca Funciona para mim, você pode encontrar onde está o java e depois encontrar o caminho do jdk.
einverne
45
update-java-alternatives -l

lhe dirá qual implementação java é o padrão para o seu sistema e onde no sistema de arquivos está instalado. Verifique o manual para mais opções.

forcefsck
fonte
7
Isso é específico do debian (pelo menos). Outras distros podem não ter isso
dequis 21/10
2
@dequis, é uma resposta específica ao debian, desde a pergunta mencionada apt-gete a distribuição a ser feita Debian 2.6.26. AFAIK, deve ser o mesmo para todos os derivativos debian.
forcefsck
2
Estou apenas apontando para outras pessoas. Eu sei que é válido para esta questão em particular.
dequis
1
update-alternative --list | grep java trabalhou para mim em RHEL
Upen
30
$ which java 

deve lhe dar algo como

/usr/bin/java
O Surricano
fonte
2
verdade. eu aposto que é depois de apt-get install
O Surrican
6
Na verdade, isso não aponta para um JDK completo. 1. É um link simbólico e, mesmo que você leia o link simbólico, o binário também não está dentro de um JDK. Por exemplo, se eu executar o comando, readlink -f $(which javac)ele será impresso /usr/lib/jvm/java-8-oracle/bin/javac. Essa pasta bin NÃO é um JDK. Teste geral ácido-base para verificar se é um JDK para verificar se a corrente $JAVA_HOMEcontém um caminho de lib/tools.jar. No elenco, /usr/lib/jvm/java-8-oracle/binisso não é verdade, portanto, não é um JDK.
Zombies
No Centos / RHL É o que eu prefiro encontrar o JDK (se instalado). find /usr/java -wholename '*ava/jdk*' -prune Mas o comportamento depende se você está falando sobre o OpenJDK ou Oracle Java e como ele foi instalado em primeiro lugar.
Steven the Facilly Fun
12

Esta pergunta será movida, mas você pode fazer o seguinte

which javac

ou

cd /
find . -name 'javac'
Andrew T Finnell
fonte
Eu gosto da segunda opção - simples e útil se você tiver vários JREs / JDKs e quiser encontrá-los todos.
Amos M. Carpenter
"find / -name 'javac'" é menos digitado, mas requer privilégio de administrador (root) ou você receberá muitas mensagens negadas com permissão.
Steven the facilmente divertido
9

Use find para localizá-lo. Deve estar em /usralgum lugar:

find /usr -name java

Ao executar o comando, se houver muitas mensagens "Permissão negada" ofuscando os resultados reais encontrados, basta redirecionar o stderr para / dev / null

find /usr -name java 2> /dev/null
Brent Worden
fonte
1
Se não for root (admin), você receberá muitas mensagens de permissão negada.
Steven the facilmente divertido
7

Outra melhor maneira de encontrar o caminho da pasta Java é usar o alternativescomando no Fedora Linux (eu sei que é para o Ubuntu, mas eu bati neste post do google apenas pelo título). Só quero compartilhar pessoas como eu procurando respostas para o sabor do fedora.

Para exibir todas as informações sobre java

alternatives --display java
iankits
fonte
1
Isso funcionou para mim, retornando / usr / java / jdk- [versão] no Fedora
Sina Madani
3

Processo de três etapas: Primeiro: abra o Terminal -> $ whereis java daria uma saída como esta: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

Segundo: ls -l /usr/bin/java daria uma saída como esta: lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

Terceiro: a ls -l /etc/alternatives/java saída é o caminho JDK: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Anubhav Gupta
fonte
2

Simples, tente:

É / usr / local / java / jdk [versão]

Ashansu Pant
fonte
1

o comando: sudo update-alternatives --config javaencontrará o caminho completo de todas as versões Java instaladas

Hasan
fonte
1

Essa pergunta ainda parece relevante, e a resposta parece ser um alvo em movimento.

No meu sistema debian (buster):

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

No entanto, se você realmente olhar para lá, verá vários diretórios e links simbólicos colocados pelo sistema de pacotes para simplificar a manutenção futura.

O diretório real é java-11-openjdk-amd64, com outro link simbólico de default-java. Há também um openjdk-11diretório, mas parece conter apenas um arquivo source.zip.

Dado isso, APENAS para o Debian, eu acho que o melhor valor a ser usado é /usr/lib/jvm/default-java, pois isso sempre deve ser válido, mesmo se você decidir instalar uma versão totalmente diferente do java, ou mesmo trocar de fornecedor.

O motivo normal para querer saber o caminho é porque algum aplicativo o deseja e você provavelmente não deseja que o aplicativo seja interrompido porque fez uma atualização que alterou os números de versão.

Medo Quixadhal
fonte
0

no OpenSUSE 13.1 / 13.2, seu: /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
número da versão pode ser 1.7.x 1.8.x etc. verifique a versão do gerenciador de software que você instalou ...

André

Glória holandesa
fonte
0

No Linux Fedora30, estão disponíveis várias versões do JDK java completo, especificamente nomes de pacotes:

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

Uma vez instalados, eles são encontrados em: /usr/lib/jvm

Para selecionar o local / diretório de um JDK de desenvolvimento completo (que é diferente do JRE de tempo de execução mais simples), procure as entradas:

ls -ld java*openjdk*

Aqui estão duas boas opções, que são links para versões específicas, nas quais você terá que selecionar a versão:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk
Grant Rostig
fonte
0

Esta é a melhor maneira que funcionou para mim Execute este comando: -

$(dirname $(readlink $(which javac)))/java_home
Manish Sharma
fonte