Múltiplos ambientes Java na mesma máquina Linux

9

Qual é a maneira mais eficiente de instalar várias versões Java JDK simultâneas na mesma máquina Linux?

Eu preciso do Java5, enquanto o meu atual Ubuntu 9.10 Karmic vem carregado com o Java6.

Sei que posso configurar uma VM para isso, mas estou procurando alternativas.

    
por jldupont 28.04.2010 / 16:31

2 respostas

5

Se você baixar o binário linux da Sun, poderá instalá-lo no diretório que desejar. Em seguida, apenas faça referência a essas bibliotecas em seu código e você é bom para ir.

Com o instalador binário, ele criará seu próprio subdiretório nomeado (por exemplo, em seu exemplo, /usr/java/jdk1.5.0_), para que você possa fazer o download de quantos desejar e eles se alinharão em sub-drectories apropriadamente nomeadas.

O principal binário java mora em / usr / bin, então se você quiser substituí-lo ao ponto em que quando você digita "java" ele acessa seu java, e não aquele, você simplesmente remove o antigo de / usr / bin, e ligar o seu novo lá dentro Digitar which java dirá qual é o java padrão no seu sistema.

@jldupont: Quando penso em instalações simultâneas, penso em várias versões instaladas na mesma máquina, o que meu método absolutamente lhe dará. Eu tenho cerca de 12 versões do java instalado na minha caixa de produção para lidar com hand-me-downs de empresas que ainda não foram atualizadas.

No entanto quando você digita "java" você só vai ter uma versão do java, já que é isso que está em '/usr/bin'... Você teria que digitar algo como '/usr/java/jdk1.5.1/bin/java' para obter um binário java específico que não seja o padrão do sistema.

    
por 28.04.2010 / 16:43
1

Basta baixar e executar o arquivo .bin do oracle, que então se extrai para uma pasta. Mova esta pasta (por exemplo, jdk1.6.0_32 ) para / usr / lib / jvm e, em seguida, use o script setjava para alterar as versões do java. Por causa das declarações export você precisa ficar no mesmo terminal, no entanto. Além disso, algumas pequenas ferramentas de jvm podem não estar definidas, mas acho que isso deve funcionar na maioria dos casos. Também sou um noob de shell, então, por favor, corrija-me se houver uma possibilidade melhor :-) O código para mim é:

#!/bin/bash
# shouldnt be used in a loop, else the path may become too long

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Not running as root"
    exit
fi

case "$1" in
  6)
    echo "Setting Java version 6"
    export PATH=/usr/lib/jvm/jdk1.6.0_32/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javaws /usr/bin/javaws
    javac -version    
    java -version
    ;;
  7)
    echo "Setting Java version 7"
    export PATH=/usr/lib/jvm/java-7-openjdk/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javaws /usr/bin/javaws
    javac -version
    java -version
    ;;
  *)
    echo "Usage: $0 {6|7}"

esac
exit 0
    
por 12.06.2012 / 13:59

Tags