incapaz de comandos “java”, “javac” etc. no terminal diretamente e duas versões do jdk? [duplicado]

0

Eu costumo usar eclipse, mas eu disse "vamos fazer alguma fantasia" para mim e as coisas aconteceram. Eu tentei usar o comando de terminal javac em primeiro lugar. Eu tenho

 The program 'javac' can be found in the following packages:

* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless

Try: sudo apt install (selected package)

Já instalei jre8 e jdk8 manualmente no site do oracle (edição padrão) e já estou fazendo programas com o eclipse. Então eu digitei java -version e a resposta foi

openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)

que não é o que eu instalei manualmente. Então eu usei locate -br ^javac$ e consegui dois locais (não uma surpresa). Então:

  1. Eu posso usar javac apenas com o caminho para onde eu instalei o jdk manualmente, mas eu quero usar comandos sem caminho, apenas diretamente. Isso é possível (se sim, então como?
  2. Parece que tenho duas versões do java. Isso causa algum problema? Se isso acontecer, diga-me como corrigir por favor (eu prefiro eliminar openjdk9)
por Letitbe 14.03.2017 / 20:47

1 resposta

1

Você pode escolher seu java padrão executando update-alternatives :

$ sudo update-alternatives --config java

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

Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java              1091      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
* 3            /usr/lib/jvm/java-9-oracle/bin/java              1091      manual mode
  4            /usr/lib/jvm/jdk1.8.0_91                         100       manual mode
  5            /usr/lib/jvm/jdk1.8.0_91/bin/java                100       manual mode

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

Agora mude sua versão simples type a number e tecle Enter ou para manter o padrão, apenas pressione Enter . Faça o mesmo para o compilador:

sudo update-alternatives --config javac

E faça sua escolha. Agora também é possível usar um comando melhor update-java-alternatives conforme recomendado por Chai .

Agora, supondo que você tenha esses pacotes java instalados:

java-9-oracle
java-8-openjdk-amd64
jdk1.8.0_91

E eu quero a versão java-9-oracle , então vou simplesmente executar:

sudo update-java-alternatives -s <java_name>

sudo update-java-alternatives -s java-9-oracle

Isso criaria todos os links necessários para a minha versão do java desejada.

Agora, à luz de que você colocou java em um local diferente, usaremos update-alternatives --install para informar onde está o nosso java.

sudo update-alternatives --install /usr/bin/java java /usr/share/java/jdk1.8.0_121/bin/java 1

E para o compilador javac o mesmo

sudo update-alternatives --install /usr/bin/javac javac /usr/share/java/jdk1.8.0_121/bin/javac 1

Fonte: man update-java-alternatives

    
por George Udosen 14.03.2017 / 22:59