Skip to content


Активация java в браузерах под linux

Единственная версия java, которая не тормозит

Единственная версия java, которая не тормозит

Opera использует Java Runtime Environment (JRE) напрямую, а не через plug-in, как это реализовано в других браузерах. Для проверки работоспособности Java можно использовать следующий тестовый апплет. Если ничего похожего на java-апплет не отображается или броузер пишет сообщение об ошибке, делаем следующее.

  1. Проверяем, есть ли в системе библиотеки libjava.so и libawt.so:
    locate libjava.so
    /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libjava.so
    locate libawt.so
    /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libawt.so

    Если эти два файла не найдены, то устанавливаем соответствующий пакет (его имя зависит от дистрибутива). В случае с Fedora это java-1.6.0-openjdk. А вообще название пакета можно определить с помощью чудесного сервиса RPMFIND.

  2. Заходим в меню оперы "Tools"-"Preferences"-"Content", устанавливаем галочку "Enable Java", жмем рядом кнопку "Java Options..." и указываем в диалоговом окошке путь к директории, где обитают две вышеупомянутых библиотеки. Жмем кнопку "Validate Java Path", если не ругается, перезапускаем браузер.
  3. После перезапуска опять проверям работу java, на этот раз тестовый апплет должен заработать.

UPDATE для Opera 11.01 на CentOS 5.5 x86_64 и Fedora 14: в меню Preferences уже нет галочки "Enable Java", теперь последовательность немного другая.

  1. Смотрим где лежит libjavaplugin:
    [root@sunrise ~]# locate libjavaplugin
    /usr/java/jre1.6.0_23/lib/amd64/libjavaplugin_jni.so
  2. Заходим в настройки Оперы в меню "Инструменты" - "Общие настройки" - "Содержимое", жмём кнопку "Настроить плагин..." и добавляем найденный путь /usr/java/jre1.6.0_23/lib/amd64 к списку директорий, где искать плагины:
    диалог выбора директорий поиска плагинов в броузере opera

    Скриншот оперы, указание пути к Java runtime environment

После этого в списке плагинов появляется ещё и "Java(TM) Plugin" и java начинает работать даже без перезапуска броузера, что можно проверить опять же с помощью вышеупомянутого тестового апплета.

Firefox


Для броузера firefox (проверялось на версии 3.6.17 в fedora 14) включение java можно делать так:

  1. Смотрим есть ли какие-то связанные с java плагины в /usr/lib/mozilla/plugins и путем просмотра инфы на странице со служебным адресом about:plugins. Если там что-то есть, то соответствующий .so-файл удаляем.
  2. Ищем библиотеку libnpjp2.so, если находим несколько, то выбираем ту, которая находится в директории, соответствующей JRE нужной нам версии:
    $ locate libnpjp2.so
    /usr/java/jre1.6.0_26/lib/i386/libnpjp2.so
  3. Создаем символическую ссылку на найденную библиотеку в директорию ~/.mozilla/plugins (если требуется включить java только для одного пользователя) или в /usr/lib/mozilla/plugins (если требуется включить java для всех пользователей системы):
    $ cd ~/.mozilla/plugins/
    $ ln -s /usr/java/jre1.6.0_26/lib/i386/libnpjp2.so

Если после этого java всё еще не работает, нужно проверить, что все другие java-плагины удалены (отсутствуют симлинки на них и их не видно на странице about:plugins). Даже если ненужный плагин выключен (но не удалён) и его видно "Tools - AddOns - Plugins" серым цветом, он может мешать работе нужного плагина. Проверено лично (в моем случае выключенный /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/lib/amd64/IcedTeaPlugin.so не давал работать включенному /usr/java/jre1.6.0_26/lib/amd64/libnpjp2.so - на странице проверки jav-ы http://www.java.com/en/download/testjava.jsp писало "Something wrong, java not working") - только после удаления симлинки

$ ls -l  /usr/lib64/mozilla/plugins/libjavaplugin.so
lrwxrwxrwx 1 root root 64 Июн 16 11:39 /etc/alternatives/libjavaplugin.so.x86_64 -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/lib/amd64/IcedTeaPlugin.so
# unlink /usr/lib64/mozilla/plugins/libjavaplugin.so

родной плагин от Oracle (libnpjp2.so) заработал нормально.

Дополнительную информацию о плагинах можно почитать на http://plugindoc.mozdev.org/

Google chrome


Хром использует плагины, найденные в директории /usr/lib/mozilla/plugins (или /usr/lib64/mozilla/plugins если у вас 64-битная версия ОС). Поэтому настройка тут в общем аналогичная firefox-у. Проверить какие плагины установлены в chrome можно на служебной странице chrome://plugins/.

Выбор нужной JVM


Если в системе установлено несколько JVM (например, при установке openoffice он тянет за собой openjdk, который значительно отличается от "классической" SunOracle-овской Java Virtual Machine), то заставить приложения работать именно с нужной Вам JVM можно следующим образом. Пусть для примера мы только что установили jre-6u26-linux-i586.rpm и хотим чтобы java использовалась именно отсюда.

  1. Смотрим какие симлинки предоставляют бинарник java:
    $ update-alternatives --config java
    There are 2 programs which provide 'java'.
      Selection    Command
    *+ 1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
       2           /usr/lib/jvm/jre-1.5.0-gcj/bin/java

    Как видно, нужного нам бинарника от версии 1.6.0_26 тут нет, поэтому нужно его добавить.

  2. Добавляем еще одну симлинку на нашу свежеустановленную джаву:
    # update-alternatives --install /usr/bin/java java /usr/java/jre1.6.0_26/bin/java 50
  3. И выбираем её как master link (подробности в man alternatives):
    # update-alternatives --config java
    There are 3 programs which provide 'java'.
      Selection    Command
    *+ 1           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
       2           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
       3           /usr/java/jre1.6.0_26/bin/java
    Enter to keep the current selection[+], or type selection number: 3
    $ java -version
    java version "1.6.0_26"
    Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
    Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
  4. Проверяем, что симлинка /usr/java/latest указывает на нужную нам версию и при необходимости меняем:
    $ ls -la /usr/java/
    total 12
    drwxr-xr-x   3 root root 4096 Jun 26 18:42 .
    drwxr-xr-x. 13 root root 4096 Jun 26 18:41 ..
    lrwxrwxrwx   1 root root   16 Jun 26 18:42 default -> /usr/java/latest
    drwxr-xr-x   7 root root 4096 Jun 26 18:41 jre1.6.0_26
    lrwxrwxrwx   1 root root   21 Jun 26 18:42 latest -> /usr/java/jre1.6.0_26

Отличия между различными JVM


Какую JVM выбрать зависит во многом от задач, которые требуется решать с их помощью. Иногда даже приходится на одном компе держать несколько разных Java-машин. Ниже список эмпирически открытых особенностей, которые, возможно, кому-то пригодятся.

– Замечено, что в Fedora 15 Cisco WebEx отказался нормально работать с JRE от Oracle версии 1.7.0_04 (при попытке подсоединиться к аудио-конференции вылазило окошко с ошибкой "audio device is unaccessible now". В то же время WebEx работал нормально с OpenJDK Runtime Environment (IcedTea6 1.10.4), симлинка /etc/alternatives/libjavaplugin.so при этом указывала на файл /usr/lib/jvm/jre-1.6.0-openjdk/lib/i386/IcedTeaPlugin.so

– Клиент-банк iBank2 от конторы BIFIT по состоянию на 2011-ый год не работал с OpenJDK, но работал нормально с Oracle JRE.

– Веб-интерфейсы многих IPKVM-ов/DRAC/iLo-карт для удалённого доступа к консоли серверов не работали вообще или глючили под OpenJDK, но работали нормально с Oracle JRE

ПРИМЕЧАНИЕ: Если у вас 64-битная версия ОС (проверить можно командой "uname -a"), то везде вместо директории /usr/lib/mozilla/plugins следует использовать /usr/lib64/mozilla/plugins.

Posted in *nix, Howto.

Tagged with , , .


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Nick says

    Спаситель мой!!!
    Я чуть разумом не двинулся, пытаясь найти, куда эти наркоманы в последних версиях запиндонили все явовые настройки.
    Фраза "и добавляем найденный путь /usr/java/jre1.6.0_23/lib/amd64 к списку директорий" для меня прозвучала как музыка.

  2. Admin says

    Fedora 40 and java 1.8.0_202:
    $ javaws viewer.jnlp
    javaws: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

    SOLUTION (dirty hack really):
    $ sudo ln -s /usr/lib64/libnsl.so.3 /usr/lib64/libnsl.so.1

You must be logged in to post a comment.