9

Какой самый эффективный способ установить несколько одновременных версий Java JDK на одном компьютере с Linux?

Мне нужна Java5, в то время как мой текущий Ubuntu 9.10 Karmic поставляется с Java6.

Я знаю, что могу настроить виртуальную машину для этого, но я ищу альтернативы.

2 ответа2

5

Если вы загружаете бинарный файл Linux из Sun, вы можете установить его в любой каталог, который вам нравится. Затем просто укажите ссылки на эти библиотеки в своем коде, и все готово.

С помощью бинарного установщика он создаст свой собственный именованный подкаталог (например, в вашем примере /usr/java/jdk1.5.0_), так что вы можете скачать столько, сколько захотите, и они выстроятся в соответствующие имена суб-drectories.

Основной двоичный файл Java находится в /usr /bin, поэтому, если вы хотите заменить его до того момента, когда вы набираете "java", он обращается к вашей java, а не к той, вы просто перемещаете старый из /usr /bin и свяжите свой новый там. Ввод which java скажет вам, какой java по умолчанию в вашей системе.

@jldupont: Когда я думаю о параллельных установках, я думаю о нескольких версиях, установленных на одном компьютере, что мой метод абсолютно вам даст. У меня есть около 12 версий java, установленных на моей рабочей коробке, для обработки подручных материалов от компаний, которые еще не были обновлены.

Однако, когда вы набираете "java", вы получите только одну версию java, поскольку это то, что находится в «/usr/bin» ...Вам нужно будет напечатать что-то вроде '/usr/java/jdk1.5.1/bin/java', чтобы получить конкретный двоичный файл java, который не является системным по умолчанию.

1

Просто скачайте и запустите файл .bin из oracle, который затем извлечет себя в папку. Переместите эту папку (например, jdk1.6.0_32) в /usr /lib /jvm, а затем сценарий setjava я использую для изменения версий java. Однако из-за операторов export вы должны оставаться в одном терминале. Также некоторые маленькие инструменты jvm могут быть не установлены, но я думаю, что это должно работать в большинстве случаев. Кроме того, я noob оболочки, поэтому, пожалуйста, поправьте меня, если есть лучшая возможность :-) Код для меня:

#!/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .