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?


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


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.


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

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'

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

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

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



1

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


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.


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é


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

0

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

$(dirname $(readlink $(which javac)))/java_home
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.