Como definir o Java da Oracle como o Java padrão no Ubuntu?

134

Como altero o valor de JAVA_HOMEno Ubuntu para apontar para o Java da Oracle?

Deve apontar para java-6-sunou java-6-sun-1.6.0.24?

Ashish Agarwal
fonte

Respostas:

175

Eu coloquei a linha:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

no meu ~/.bashrcarquivo

/usr/lib/jvm/java7-oracledeve ser um link simbólico apontando para /usr/lib/jvm/java-7-oracle-[version number here].

A razão de ser um link simbólico é que, caso exista uma nova versão da JVM, você não precise atualizar seu .bashrcarquivo, ele deve apontar automaticamente para a nova versão.

Se você deseja definir JAVA_HOMEvariáveis ​​de ambiente globalmente e no nível do sistema, o uso deve ser definido no /etc/environmentarquivo

srkiNZ84
fonte
4
Ou /usr/lib/jvm/java-1.6.0-openjdk-amd64 se você estiver usando o OpenJDK em vez do JDK da Oracle (Sun).
Pm_labs
7
Você pode usar export JAVA_HOME = / usr / lib / jvm / default-java /
noomz
@noomz Como você consegue isso se o java padrão não existe?
AHungerArtist
@AHungerArtist Você consegue isso se instalar o openjdk ou outros pacotes Ubuntu oficialmente suportados. Infelizmente, não há suporte para o Oracle JDK usando o webupd8 / java ppa. De fato, não está totalmente claro para mim o que o oracle-java7-set-defaultpacote faz.
Melvyn 23/03
Onde no arquivo você coloca isso?
Czipperz
166

Se você deseja alterá-lo globalmente e no nível do sistema;

No

/etc/environment

adicione esta linha:

JAVA_HOME=/usr/lib/jvm/java-7-oracle
metdos
fonte
27
1 Esta é a maneira recomendada help.ubuntu.com/community/EnvironmentVariables
daniel Kullmann
@metdos a resposta acima não é global ou no nível do sistema?
Android Killer
1
@AndroidKiller você verificou o link que daniel kullmann apontou?
metdos
@metdos Funciona bem, mas as variáveis ​​de referência não estão funcionando para mim ... $JAVA_HOMEnão resolve quando usado assim PATH=$JAVA_HOME/bin, tentei reiniciar, sem efeito. Preciso exportou set JAVA_HOMEneste arquivo ou no meu perfil?
rafian
@Raffian Eu não tenho certeza sobre os diferentes casos de canto, desta forma ele funcionou perfeitamente para mim, para obter mais informações eu recomendo que você leia help.ubuntu.com/community/EnvironmentVariables
metdos
53

para definir o Java SE Development Kit da Oracle como o Java padrão do sistema, basta fazer o download do Java SE Development Kit mais recente a partir daqui e criar um diretório em algum lugar do seu sistema de arquivos, por exemplo, /usr/javaagora extrair os arquivos que você acabou de baixar nesse diretório:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

agora para definir sua JAVA_HOMEvariável de ambiente:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

verifique se o java do Oracle está definido como java padrão por:

$ update-alternatives --config java

você recebe algo como isto:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

Press enter to keep the current choice[*], or type selection number:

preste atenção ao asterisco antes dos números à esquerda e, se o número correto não estiver definido, escolha o número correto digitando o número e pressionando enter. agora teste seu java:

$ java -version

se você tiver algo parecido com o seguinte, está pronto:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

Observe também que você pode precisar de permissão root ou estar no grupo sudoers para poder fazer isso. Eu testei esta solução no ubuntu 12.04 e no Debian wheezy e funciona nos dois.

Barracuda
fonte
1
Sim, esta solução é muito mais limpa do que a aceita.
Simone cittadini
Comentários @JayminGajjar que expressam gratidão não são necessários. O mecanismo de suporte a boas perguntas / respostas neste site é para votá-las. Se você não possuir reputação suficiente para fazer isso, mas tem o suficiente para comentário, por favor, tente incluir algumas informações úteis nele como no que sistema e que OS você fez teste e descubra esta solução de trabalho etc.
Barracuda
@Barracuda i já up-votado, Você está correto sobre info, Ela trabalhou para mim no Ubuntu 16.10 64 Server OS :)
Jaymin Gajjar
20

Se você deseja que essa variável de ambiente esteja disponível para todos os usuários e na inicialização do sistema, adicione o seguinte a /etc/profile.d/java.sh (crie-o, se necessário):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Em seguida, em um terminal:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Minha segunda pergunta é - deve apontar para java-6-sun ou java-6-sun-1.6.0.24?

Ele sempre deve apontar para java-7-oracleisso como um link simbólico para o mais recente instalado (assumindo que você instalou o Java a partir dos repositórios Ubuntu e agora a partir do download disponível em oracle.com).

Jits
fonte
12

java 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

ou java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

Roman Rhrn Nesterov
fonte
10

Se você estiver desenvolvendo algum tipo de desenvolvimento, precisará apontar para o JDK (Java Development Kit). Caso contrário, você pode apontar para o JRE (Java Runtime Environment).

O JDK contém tudo o que o JRE possui e muito mais. Se você estiver apenas executando programas Java, poderá apontar para o JRE ou o JDK.

Você deve definir com JAVA_HOME base no Java atual que está usando. readlinkimprimirá o valor de um link simbólico para o Java atual e sedo ajustará no diretório JRE:

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

Se você deseja configurar o JAVA_HOME para o JDK, deve subir mais uma pasta:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
user987339
fonte
7

Se você desejar usar uma versão específica do Java quando vários JDKs estiverem instalados, apenas a configuração de JAVA_HOME pode não funcionar.

Você precisa usar sudo update-alternatives --config javapara definir o Java padrão.

Consulte /ubuntu/121654/how-to-set-default-java-version .

prosseek
fonte
5

Veja isto ; corre

sudo  update-java-alternatives --list

para listar todas as instalações Java em uma máquina por nome e diretório e, em seguida, execute

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

para escolher qual JRE / JDK usar.

Se você deseja usar JDKs / JREs diferentes para cada tarefa Java, é possível executar alternativas de atualização para configurar um executável java por vez; você pode correr

sudo  update-alternatives --config java[Tab]

para ver os comandos Java que podem ser configurados (java, javac, javah, javaws, etc). E depois

sudo  update-alternatives --config [javac|java|javadoc|etc.]

associará essa tarefa / comando Java a um JDK / JRE específico.

Você também pode precisar definir JAVA_HOME para alguns aplicativos: a partir desta resposta, você pode usar

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

para JREs ou

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

para JDKs.

WillC
fonte
Outra abordagem:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg