Устранение неполадок Oracle Java 7 с помощью Firefox

Я запускаю Ubuntu 13.04 с современным Firefox, и Oracle Java 7 устанавливается из пакета oracle-java7-installer из ppa:webupd8team/java PPA.

Java не работает в Firefox.

Когда я запускаю firefox из командной строки и открываю веб-страницу с некоторым количеством java, java-апплет не работает и в терминале firefox печатает:

$ firefox

(process:28565): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
java.io.IOException: Cannot run program "/usr/lib/jvm/java-7-oracle/jre/bin/java": error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at sun.plugin2.jvm.JVMLauncher.start(Unknown Source)
    at sun.plugin2.main.server.JVMInstance.startImpl(Unknown Source)
(and some 20-30 lines more)

(я думаю, GLib-строка здесь можно игнорировать.)

Кроме того, когда я закрываю вкладку, содержащую java-апплет, firefox зависает, и мне приходится его убивать.

Тем не менее, разрешения выглядят хорошо:

$ ls -l /usr/lib/jvm/java-7-oracle/jre/bin/java
-rwxr-xr-x 1 root root 5746 Jul 22 17:35 /usr/lib/jvm/java-7-oracle/jre/bin/java

Итак, что здесь может быть не так? Что проверить дальше?

РЕДАКТИРОВАТЬ: Oracle Java ~~ is ~~ была необходима для глупого онлайн-банкинга Danske Bank. (Конечно, вы можете предложить мне сменить банк.)

0
задан 3 August 2015 в 21:23

1 ответ

У меня возникла та же проблема с Ubuntu Precise. Я запускаю Proxmox на сервере, и для их просмотра java требуется Oracle java и он не работает с icedtea. Я установил последнюю версию Java 7 из http://www.webupd8.org , но не смог заставить ее работать с Firefox. Я обнаружил, что Java работает в браузере Opera.

Когда я увидел ваше сообщение и увидел проблему с разрешениями, я подумал: ахах! AppArmor. Конечно, Kern.log показывает:

/var/log/kern.log

Aug  1 09:54:50 laptop kernel: [42653.495082] type=1400 audit(1375368890.811:81): apparmor="DENIED" operation="exec" parent=22495 profile="/usr/lib/firefox/firefox{,*[^s][^h]}" name="/usr/lib/jvm/java-7-oracle/jre/bin/java" pid=22507 comm="plugin-containe" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0
Aug  1 09:56:38 laptop kernel: [42761.283499] type=1400 audit(1375368998.599:82): apparmor="DENIED" operation="exec" parent=22812 profile="/usr/lib/firefox/firefox{,*[^s][^h]}" name="/usr/lib/jvm/java-7-oracle/jre/bin/java" pid=22824 comm="plugin-containe" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0
Aug  1 10:11:51 laptop kernel: [43674.436828] type=1400 audit(1375369911.752:83): apparmor="DENIED" operation="exec" parent=23255 profile="/usr/lib/firefox/firefox{,*[^s][^h]}" name="/usr/lib/jvm/java-7-oracle/jre/bin/java" pid=23267 comm="plugin-containe" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0

Я перевел apparmor в режим жалоб

sudo aa-complain /usr/bin/firefox
sudo service apparmor reload

, и он начал работать

Затем, когда я перезагружал apparmor в принудительный режим

sudo aa-enforce /usr/bin/firefox
sudo service apparmor reload

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

Дополнение: после некоторой игры я обнаружил, что процессы, запущенные в режиме жалобы, остаются в режиме жалобы даже после переключения профиля в принудительный режим.

Обновите профиль apparmor для firefox (или других браузеров) в /etc/apparmor.d/abstractions/ubuntu-browsers.d/java

# Under Java plugin, add two lines:
  /usr/lib/jvm/java-*-oracle/jre/bin/java{,_vm} cx -> browser_java,
  /usr/lib/jvm/java-*-oracle/jre/lib/*/libnp*.so cx -> browser_java,
# before the lines:
  /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} cx -> browser_java,
  /usr/lib/jvm/java-*-sun-1.*/jre/lib/*/libnp*.so cx -> browser_java,

# In the browser_java profile, add two lines:
  /usr/lib/jvm/java-*-oracle/jre/bin/java{,_vm} ix,
  /usr/lib/jvm/java-*-oracle/jre/lib/i386/client/classes.jsa m,
# before the lines:
  /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} ix,
  /usr/lib/jvm/java-*-sun-1.*/jre/lib/i386/client/classes.jsa m,

Затем перезапустите apparmor:

sudo service apparmor restart

При тестировании я обнаружил, что необходимо перезагрузить или перезапустить apparmor после каждого изменения профиля, а затем перезапустить браузер. Несколько раз я был одурачен, думая, что изменение работало только для того, чтобы оно потерпело неудачу через несколько часов. Я все еще получаю несколько сообщений apparmor при запуске теста java-браузера, но ни одно из них не мешает его работе.

0
ответ дан 3 August 2015 в 21:23

Другие вопросы по тегам:

Похожие вопросы: