Wiele środowisk Java na tym samym komputerze z systemem Linux

9

Jaki jest najbardziej wydajny sposób instalowania wielu współbieżnych wersji JDK Java na tym samym komputerze z systemem Linux?

Potrzebuję Java5, podczas gdy mój obecny Ubuntu 9.10 Karmic jest wyposażony w Java6.

Wiem, że mógłbym skonfigurować maszynę wirtualną do tego, ale szukam alternatyw.

Jldupont
źródło

Odpowiedzi:

5

Jeśli pobierasz plik binarny linux z Sun, możesz go zainstalować w dowolnym katalogu, który ci się podoba. Następnie po prostu odwołaj się do tych bibliotek w swoim kodzie i możesz zacząć.

Za pomocą instalatora binarnego utworzy własny nazwany podkatalog (np. W twoim przykładzie /usr/java/jdk1.5.0_), dzięki czemu możesz pobrać tyle, ile chcesz, i ustawią się w odpowiednio nazwanych podrodzajów.

Główny plik binarny java znajduje się w / usr / bin, więc jeśli chcesz go zastąpić do momentu, w którym po wpisaniu „java” uzyskasz dostęp do java, a nie do tego, po prostu przenieś stary z / usr / bin i połącz tam swój nowy. Wpisanie which javapowie ci, jaka jest domyślna Java w twoim systemie.

@jldupont: Kiedy myślę o jednoczesnych instalacjach, myślę o wielu wersjach zainstalowanych na tym samym komputerze, co moja metoda absolutnie ci da. Mam około 12 wersji Java zainstalowanych na moim pudełku produkcyjnym, aby obsługiwać przekazywanie informacji od firm, które nie zostały jeszcze zaktualizowane.

Jednak gdy wpiszesz „java”, dostaniesz tylko jedną wersję java, ponieważ to jest to w „/usr/bin” ... Musisz wpisać coś w stylu „/usr/java/jdk1.5.1/ bin / java ', aby uzyskać konkretny plik binarny java, który nie jest domyślnym systemem.

Satanicpuppy
źródło
Dzięki, ale potrzebuję równoczesnych instalacji. Jak mogę to zrobić?
jldupont
dzięki. Zainstalowałem JDK5 w / opt i napisałem sobie skrypt bash, aby skonfigurować zmienne środowiskowe ... wygląda na to, że działa. Myślałem, że to będzie bardziej bolesne!
jldupont
@jldupont: Właściwie to jedna z rzeczy, które uwielbiam w Linuksie ... Ponieważ nie ma rejestru, który mógłby ci przeszkodzić, możesz zainstalować to samo sto razy, i to nie jest problem, o ile upewniasz się aby nie nadpisywać wspólnych plików. Znam wielu ludzi, którzy uruchamiają (na przykład) wiele różnych wersji Apache. Ja sam mam tendencję do uruchamiania wielu wersji Perla i Javy.
Satanicpuppy
1

Po prostu pobierz i uruchom plik .bin z oracle, który następnie rozpakuje się do folderu. Przenieś ten folder (np. jdk1.6.0_32) Do / usr / lib / jvm, a następnie skrypt, setjavaktórego używam do zmiany wersji Java. exportJednak ze względu na stwierdzenia musisz pozostać w tym samym terminalu. Również niektóre małe narzędzia JVM mogą nie być ustawione, ale myślę, że powinno działać w większości przypadków. Również jestem skorupą noob, więc poprawcie mnie, jeśli jest lepsza możliwość :-) Kod dla mnie to:

#!/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
Konrad Höffner
źródło
Hoffner Nie wiem, jak będą działały wyciągi eksportowe. Nie działają, kiedy próbuję.
SureshS,