Могу ли я установить 32-разрядную версию Java в дополнение к 64-разрядной версии?

14

Для нормальной разработки я использую 64-битную виртуальную машину, которая появляется, когда я устанавливаю комплект разработки Java (OpenJDK) с менеджером пакетов.

Но есть некоторые Java-приложения (содержащие, как мне кажется, нативные библиотеки), которые не работают на 64-битной Java VM. (Похоже, что SoapUI является таким кандидатом - в версиях 4.0.1 и 4.5 beta 1 он завершается с ошибкой сегментации при запуске в 64-битной виртуальной машине.)

Я пытался установить i386-версию openjdk-6-jre в дополнение к 64-битной, но это было отклонено aptitude (говоря, что это конфликтует с существующей 64-битной версией). То же самое происходит, если я пытаюсь установить openjdk-jre-7 в 32-битной версии.

Ответ на вопрос « Можно ли запустить 32-разрядное приложение Java в 64-разрядной системе, предлагаемой для установки ia32-sun-java6-bin, но нет пакета с таким именем (или чего-либо с ia32и Java)».

Что я мог сделать здесь, чтобы запустить SoapUI, не переключая всю систему Java на 32-битную установку?

Пауло Эберманн
источник
На самом деле мне удалось запустить soapUI с 64-битной версией, отредактировав скрипт оболочки для передачи другого параметра. Мне придется посмотреть, что именно я сделал.
Paŭlo Ebermann
См. Askubuntu.com/questions/111947/… для установки как 64-битной, так и 32-битной Java из репозиториев. Вы также можете изменить настройки по умолчанию.
user68186

Ответы:

4

Очень легко установить несколько версий Java. Несколько сложнее (читай: утомительно) переключаться между версиями по прихоти.

tldr

  1. Удачный
  2. Разрушить другой
  3. пути экспорта в зависимости от того, какой вы хотите

apt-get одна версия

Решите, какую версию вы будете в основном использовать. Или решить, какой из них вы хотите иметь автоматические обновления. Или подбрось монетку, что угодно. Вам даже не нужно использовать apt-get; просто вручную поддерживайте оба пакета в вашей системе (см. следующий заголовок).

Дело в том, что с помощью менеджера пакетов в Ubuntu проще поддерживать ровно одну версию пакета, такую ​​как java. Ты позаботишься об остальном.

Разрушить другой

Загрузите архив jdk. Извлеките это /opt.

переключаться между ними

Я позволил менеджеру пакетов обработать мою основную установку. Я экспортирую некоторые переменные для другого, когда мне это нужно. Я много работаю в командной строке, поэтому для меня это подходящее решение. Я беспокоюсь о:

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH

Кроме того, я символическую ссылку jdk/-> jdk1.6.0_3/потому что я ленивый и не люблю перенастраивать мой .bashrc и другие скрипты при каждом постепенном обновлении jdk.

Переменные среды, о которых вы можете заботиться:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH
djeikyb
источник
Не могли бы вы также получить .debдругую архитектуру вместо tarball?
0xC0000022L
@ 0xC0000022L Идея заключается в том, что каждая версия содержится в отдельном каталоге. Если вы можете сделать это с помощью deb, отлично!
djeikyb
2

Установка

Во-первых, загрузите последнюю версию 32-битного JDK (не JRE) от Sun. В то время это был jdk-6u7-linux-i586.bin для меня.

Установите java-пакет:

sudo apt-get install java-package 

Теперь используйте java-пакет для сборки пакета .deb из загруженного вами двоичного файла. Вы должны обмануть его в создании 32-битного пакета:

DEB_BUILD_GNU_TYPE=i486-linux-gnu DEB_BUILD_ARCH=i386 fakeroot make-jpkg jdk-6u7-linux-i586.bin 

Это должно сгенерировать пакет .deb. По какой-то причине имя пакета имеет суффикс _amd64. Установите пакет:

sudo dpkg -i sun-j2sdk1.6_1.6.0+update7_amd64.deb 

Используйте альтернативы обновления, чтобы выбрать новый JDK. Он был установлен на /usr/lib/j2sdk1.6-sun для меня.

sudo update-alternatives --config java 

Если вы запускаете java -version, вы должны увидеть правильную версию:

java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

32-битное затмение

Мне пришлось переустановить 32-битную версию Eclipse (так как SWT содержит собственный код). Мне также пришлось удалить каталог ~ / .eclipse, иначе Eclipse не запустился (для этого нужно переустановить новые версии любых плагинов). Наконец, добавьте новую JRE в Java-> Установленные JRE, используя место установки (/usr/lib/j2sdk1.6-sun) и выберите его по умолчанию.

ссылка

Самка луня
источник
Спасибо, я попробую это ... хотя я не хочу, чтобы 32-битный был по умолчанию, используйте его только для тех немногих программ, которые не работают с 64-битными.
Пауло Эберманн