Como atualizar para o java 7 sem interferir nos aplicativos dependentes do java 6?

0

Estou executando o Jetty 7.6 no Ubuntu. Está servindo tráfego ao vivo. Essa versão particular do jetty precisa do java 6.

Agora quero instalar o java 7 nessa máquina. Isso estragará minha instância do jetty que está atualmente ao vivo?

Além disso, atualizando para o java 7, o ubuntu o escolherá como o jdk padrão para usar na próxima vez que invocar um aplicativo java? Se possível eu gostaria de:

  1. Instale o java 7 jdk.
  2. Não torná-lo o padrão, mas permita-me invocar explicitamente um aplicativo usando o java 7.

Isso me permitirá testar versões mais recentes do Jetty (que exigem o java 7) sem danificar minha instalação ao vivo.

    
por user3203425 06.03.2014 / 18:09

1 resposta

0

Dependendo de como você tem o Java 6 instalado, a resposta pode ser um pouco diferente.

Ao instalar o Java por meio de .deb ou apt-get , os scripts de instalação geralmente utilizam o sistema de alternativas do Debian. O sistema de alternativas do Debian é apenas uma solução simples para ter múltiplos tempos de execução / versões de múltiplos aplicativos no mesmo sistema, criando links simbólicos em diferentes locais.

Por favor, note que se você instalou o Java a partir do binário ou fonte, isso pode não se aplicar (a menos que você o tenha configurado).

Para verificar se o java está aproveitando alternativas, execute update-alternatives --list java . Isso retornará:

update-alternatives: error: no alternatives for java.

ou

java - auto mode
  link currently points to /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java
/usr/lib/jvm/java-6-openjdk-i386/jre/bin/java - priority 1061
  slave java.1.gz: /usr/lib/jvm/java-6-openjdk-i386/jre/man/man1/java.1.gz
/usr/lib/jvm/java-7-openjdk-i386/jre/bin/java - priority 1051
  slave java.1.gz: /usr/lib/jvm/java-7-openjdk-i386/jre/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-6-openjdk-i386/jre/bin/java'.

Se a sua instalação do java estiver aproveitando o sistema de alternativas, você poderá instalar facilmente várias versões sem perturbar o tempo de execução existente. No exemplo acima, tenho duas versões do Java instaladas, openjdk6 e openjdk7. Se eu executar apenas /usr/bin/java -version , eu irei obter a "melhor" alternativa, que atualmente está apontando para openjdk6. Também posso alternar a melhor alternativa a ser usada, para que todos os aplicativos que usam o padrão java apontem para um ou outro.

Em resumo, se seu aplicativo estiver chamando explicitamente o binário java (e não a alternativa), você estará bem. Se o seu aplicativo estiver usando /usr/bin/java , será necessário certificar-se de que a instalação de outra versão do java não esteja em conflito com as alternativas do sistema.

Para saber mais sobre alternativas e todas as coisas divertidas que você pode fazer com elas, dê uma olhada no manual com man update-alternatives .

tl; dr Não, eles não devem entrar em conflito. Certifique-se de que qualquer coisa que dependa do Java 6 ou do Java 7 esteja usando o binário real (não um link simbólico), pois a execução do /usr/bin/java pode ter resultados diferentes com base nas alternativas do sistema.

    
por Ross 07.03.2014 / 00:15