Кілька середовищ Java на одній машині Linux


9

Який найефективніший спосіб встановити декілька паралельних версій Java JDK на одному пристрої Linux?

Мені потрібен Java5, поки мій поточний Ubuntu 9.10 Karmic поставляється з Java6.

Я знаю, що я міг би налаштувати VM для цього, але шукаю альтернативи.

Відповіді:


5

Якщо ви завантажуєте бінарний файл Linux від Sun, ви можете встановити його в будь-який каталог, який вам подобається. Тоді просто посилайтеся на ці вкладки у своєму коді, і ви готові йти.

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

Основний двійковий файл 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, який не є системним замовчуванням.


Дякую, але мені потрібні паралельні встановлення. Як це зробити?
jldupont

Дякую. Зараз я встановив JDK5 в / opt і написав собі скрипт bash для установки змінних оточуючого середовища ... схоже, це працює. Я думав, що це буде болючіше за це!
jldupont

@jldupont: Насправді це одна з речей, які мені подобається в Linux ... Оскільки реєстр не може заважати, ви можете встановити те саме, що сто разів, і це не проблема, якщо ви впевнені не перезаписувати загальні файли. Я знаю дуже багато людей, які керують (наприклад) декількома різними версіями Apache. Я сам схильний запускати кілька версій Perl та Java.
Satanicpuppy

1

Просто завантажте та виконайте .bin-файл із Oracle, який потім витягується у папку. Перемістіть цю папку (наприклад jdk1.6.0_32) у / usr / lib / jvm, а потім скрипт, який setjavaя використовую для зміни версій Java. Зважаючи на exportтвердження, вам потрібно залишитися в одному терміналі. Також деякі невеликі інструменти jvm можуть не бути встановлені, але я думаю, що це повинно працювати в більшості випадків. Також я оболонка оболонки, тому, будь ласка, виправте мене, якщо є краща можливість :-) Код для мене:

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

Hoffner Не впевнений, як працюватимуть звіти про експорт. Вони не працюють, коли я намагаюся.
СурешС
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.