Instalação do Java 8 vs. Java 1.8 (nome do diretório)

4

De alguma forma, acabei com dois diretórios para o OpenJdk 8 no meu sistema Ubuntu 16.04:

  1. /usr/lib/jvm/java-8-openjdk-amd64
  2. /usr/lib/jvm/java-1.8.0-openjdk-amd64

O problema é que o primeiro diretório parece estar corrompido. Se eu fizer /usr/lib/jvm/java-8-openjdk-amd64/bin/java HelloWorld em um arquivo HelloWorld.class existente, não receberei nada, mas fazer /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java HelloWorld produzirá a saída esperada.

Agora olhe para isto:

core$ ll /etc/alternatives/jav*
lrwxrwxrwx 1 root root 42 Nov  7 11:02 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/bin/java*
lrwxrwxrwx 1 root root 52 Nov  2 19:32 /etc/alternatives/java.1.gz -> /usr/lib/jvm/java-9-openjdk-amd64/man/man1/java.1.gz
lrwxrwxrwx 1 root root 43 Nov  2 19:35 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac*
lrwxrwxrwx 1 root root 53 Nov  2 19:35 /etc/alternatives/javac.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 45 Nov  2 19:35 /etc/alternatives/javadoc -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc*
lrwxrwxrwx 1 root root 55 Nov  2 19:35 /etc/alternatives/javadoc.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 43 Nov  2 19:35 /etc/alternatives/javah -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javah*
lrwxrwxrwx 1 root root 53 Nov  2 19:35 /etc/alternatives/javah.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 43 Nov  2 19:35 /etc/alternatives/javap -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javap*
lrwxrwxrwx 1 root root 53 Nov  2 19:35 /etc/alternatives/javap.1.gz -> /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javap.1.gz

Todos eles apontam para o diretório 8 , e não 1.8 , que está causando problemas ao executar programas. Minha pergunta é: como surgiu essa confusão e qual é a melhor maneira de resolver isso? Eu gostaria de remover todo o resto e ter o OpenJDK 8 como meu JDK padrão.

    
por dotslash 07.11.2016 / 06:39

2 respostas

0

Ok, então o problema no meu caso foi que eu, sem saber, instalei o openjdk headless também, e assim terminei com duas instalações. Eu finalmente removi todos os jdks do meu sistema e instalei o JDK 9 (que não é uma instalação sem problemas, devo acrescentar!) E agora tudo parece ordenado!

    
por dotslash 08.11.2016 / 05:54
1

Escolha qual você deseja usar:

sudo update-alternatives --config java

Exemplo de saída:

There are 2 choices for the alternative java (providing usr/bin/java).         
Selection     Path                                            Priority  Status
------------------------------------------------------------
  0           /usr/lib/jvm/java-8-oracle/jre/bin/java          1081     auto mode
  1           /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081     manual mode
* 2           /usr/lib/jvm/java-8-oracle/jre/bin/java          1081     manual mode

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

Você pode ver quais alternativas você tem para java ou javac usando a opção --list :

sudo update-alternatives --list java
sudo update-alternatives --list javac
    
por Benny 07.11.2016 / 10:19