update-java-alternative vs update-alternative --config java

96

No Ubuntu 12.04 LTS, instalei o JDK7, o Eclipse e o IDE do Arduino da Sun. Quero que o Arduino use o OpenJDK 6 e que o Eclipse use o JDK 7 da Sun.

Pelo que entendi, preciso escolher manualmente qual Java usar antes de executar cada aplicativo. Isso me levou ao update-java-alternatives -lcomando. Quando executo isso, vejo apenas o seguinte:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

mas quando corro update-alternatives --config java, vejo o seguinte:

*0  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   auto mode
1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode
2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode
3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

Não entendo por update-java-alternativesque não exibe as mesmas três opções. Também não entendo como alternar entre o OpenJDK6 e o ​​JDK7. Como posso usar o OpenJDK6 para desenvolvimento em Arduino e o Sun JDK7 para desenvolvimento em Eclipse / Android?

Stan Smith
fonte

Respostas:

126

sudo update-alternatives --config java

Configura o padrão para o programa "java". Essa é a Java VM.

sudo update-alternatives --config javac

Configura o compilador Java padrão.

Você também pode ver isso, porque o primeiro comando lista muitas pastas "JRE" (Java Runtime Environment) e o Programa é chamado apenas "java".

Se eu verificar qual versão está sendo usada emitindo o comando java -version ou javac -version, posso ver, que cada comando altere o programa que está sendo usado.

No entanto, o uso update-java-alternativescom uma versão JDK altera os dois programas para mim. Usando os primeiros comandos, é possível usar uma Java VM e Java Compiler de diferentes JDKs.

O update-java-alternative requer a presença de um arquivo com a extensão .jinfo no diretório / usr / lib / jvm. O pacote opendjk é enviado com um arquivo .jinfo, o jdk do Oracle (anteriormente Sun) não é. Como alternativa, você configura alternativas sem atualizar-java-alternativas :

Por exemplo, para adicionar java do diretório jvm /usr/lib/jvm/jdk-12.0.1 ( diretório padrão do pacote Debian do Oracle ) com prioridade 2082, use o seguinte comando:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

Quanto à alternância para diferentes ambientes de desenvolvimento:

Você está falando sobre iniciar o próprio IDE com diferentes versões Java ou usar versões diferentes no IDE para compilar e executar seu aplicativo?

Para 1 .: você pode especificar qual JVM usar no eclipse.ini, conforme descrito aqui . Não sei como fazer isso no IDE do Arduino.

Para 2 .: No Eclipse, você pode selecionar o JRE / JDK a ser usado em Janela -> Preferências -> Java -> JREs Instalados. E em Java -> Compiler, você pode escolher uma conformidade com Java mais antiga, se desejar.

EDIT: Esta página DigitalOcean também tem uma explicação muito boa de tudo relacionado ao Java no Ubuntu.

Benjamin Maurer
fonte
15

update-java-alternativesé um programa para atualizar alternativas para jre/jdkinstalações.

update-alternatives é um sistema simbólico de gerenciamento de links para linux (tenho certeza de que há poucas notícias aqui).

Você pode, e realmente deveria, usar os dois update-java-alternativese update-alternativesjuntos.

Primeiro, certifique-se de ter todas as alternativas configuradas corretamente. java e javac são apenas alguns. Há javadoc, rmic, serialvere outros, substituindo as variáveis acima para: native2asciie /opt/jdk1.8.0_40/bin/native2asciideve informar se a alternativa está instalado e / ou selecionado.

Quando todas as alternativas estiverem configuradas, você poderá criar links /usr/lib/jvmpara a instalação manual.

Para configurar, update-java-alternativesvocê deve usar um arquivo oculto com o mesmo nome que seu diretório, mas prefixado por a. (ponto).

Espero que isto ajude.

Bibliografia

man -S 8 update-java-alternatives

http://tech.lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu

fmmarques
fonte