
Для обычной разработки я использую 64-битную виртуальную машину, которая поставляется вместе с установкой комплекта разработки Java (OpenJDK) с менеджером пакетов.
Но есть некоторые приложения Java (содержащие собственные библиотеки, я полагаю), которые не работают на 64-битной виртуальной машине Java. (Похоже,SoapUI(является ли он таким кандидатом — в версиях 4.0.1 и 4.5 beta 1 он завершается ошибкой сегментации при запуске в 64-битной виртуальной машине.)
Я пытался установить версию openjdk-6-jre для i386 в дополнение к 64-битной, но aptitude отклонил это (сказав, что это конфликтует с существующей 64-битной версией). То же самое происходит, если я пытаюсь установить openjdk-jre-7 в 32-битной версии.
Ответ наМогу ли я запустить 32-битное приложение Java на 64-битной системе?предлагается установить , но пакета с таким именем (или чего-либо с Java) ia32-sun-java6-bin
нет .ia32
Что я могу сделать, чтобы запустить SoapUI, не переключая всю мою системную установку Java на 32-разрядную версию?
решение1
Очень просто иметь несколько установленных версий Java. Немного сложнее (читай: утомительно) переключаться между версиями по прихоти.
tldr
- apt-получить один
- распаковать другой
- пути экспорта в зависимости от того, какой из них вам нужен
apt-get одна версия
Решите, какую версию вы будете в основном использовать. Или решите, какую версию вы хотите обновлять автоматически. Или подбросьте монетку, что угодно. Вам даже не обязательно использовать apt-get
; просто вручную поддерживайте оба пакета в своей системе (см. следующий заголовок).
Суть в том, что проще использовать менеджер пакетов Ubuntu для поддержки ровно одной версии пакета, например java. Об остальном вы позаботитесь сами.
распаковать другой
Загрузите tarball 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
решение2
Монтаж
Первый,скачатьпоследний 32-битный JDK (не JRE) от Sun. На тот момент у меня это был jdk-6u7-linux-i586.bin.
Установить java-пакет:
sudo apt-get install java-package
Теперь используйте java-package для сборки пакета .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
Используйте update-alternatives для выбора нового 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-битный Eclipse
Мне пришлось переустановить 32-битную версию Eclipse (так как SWT содержит собственный код). Мне также пришлось удалить каталог ~/.eclipse, иначе Eclipse не запустится (для этого требуется переустановка новых версий всех плагинов). Наконец, добавьте новую JRE в Java->Установленные JRE, используя место установки (/usr/lib/j2sdk1.6-sun), и выберите ее в качестве установки по умолчанию.
решение3
Или вы можете установить только ia32-libs
apt-get install ia32-libs
распаковать x86 jre
http://javadl.sun.com/webapps/download/AutoDL?BundleId=63983
и добавьте в PATH, если хотите.