Для нормальной разработки я использую 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-разрядную версию?
Очень легко установить несколько версий Java. Несколько сложнее (читай: утомительно) переключаться между версиями по прихоти.
Решите, какую версию вы будете в основном использовать. Или решить, какой из них вы хотите иметь автоматические обновления. Или подбрось монетку, что угодно. Вам даже не нужно использовать 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
Установка
Сначала загрузите последний 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-битное Eclipse
Мне пришлось переустановить 32-битную версию Eclipse (поскольку SWT содержит нативный код). Мне также пришлось удалить каталог ~ / .eclipse, иначе Eclipse не запустился (для этого нужно переустановить новые версии любых плагинов). Наконец, добавьте новую JRE в Java-> Установленные JRE с помощью места установки (/usr/lib/j2sdk1.6-sun) и выберите его по умолчанию.
Или вы можете установить только ia32-libs
apt-get install ia32-libs
распаковать x86 jre
http://javadl.sun.com/webapps/download/AutoDL?BundleId = 63983
и добавьте в PATH, если хотите.