Solução de problemas do Oracle Java 7 com o Firefox

0

Eu rodei o Ubuntu 13.04 com o Firefox atualizado e o Oracle Java 7 foi instalado a partir do pacote oracle-java7-installer do ppa:webupd8team/java PPA.

O Java não funciona no Firefox.

Quando inicio o firefox a partir da linha de comando e abro uma página da Web com algum java, o applet java não funciona e no terminal firefox imprime:

$ 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)

(Eu acho que a linha GLib pode ser ignorada aqui.)

Além disso, quando eu fecho a aba que contém o applet java, o firefox congela e eu tenho que matá-lo.

No entanto, as permissões parecem bem:

$ 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

Então, o que poderia estar errado aqui? O que verificar a seguir?

EDIT: O Oracle Java é necessário para bancos on-line estúpidos do Danske Bank. (É claro que você é bem-vindo para sugerir que eu mude meu banco.)

    
por Sampo Smolander 22.07.2013 / 17:37

1 resposta

2

Eu estava experimentando exatamente o mesmo problema com o Ubuntu Precise. Estou executando o Proxmox em um servidor e seu visualizador de java requer o Oracle java e não funciona com o icedtea. Eu instalei o java 7 mais recente do link , mas não consegui fazê-lo funcionar com o Firefox. Eu descobri que o java funcionava no navegador Opera.

Quando vi sua mensagem e vi o problema com permissões, pensei ahhah! apparmor. Com certeza o kern.log mostra:

/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

Eu defino apparmor para reclamar o modo

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

e começou a funcionar

Então, quando eu reiniciar o apparmor para forçar o modo

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

ele continuou inesperadamente a funcionar. Eu suspeito que o apparmor reload tenha limpado um arquivo de cache que não foi limpo pelas muitas reinicializações que eu fiz enquanto procurava a causa.

Adição: Depois de brincar por algum tempo, descobri que os processos iniciados no modo de reclamação permanecem no modo de reclamação mesmo depois que o perfil é alternado para o modo de imposição.

Atualize o perfil apparmor para o firefox (ou outros navegadores) em /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,

Em seguida, reinicie o apparmor:

sudo service apparmor restart

Durante o teste, descobri que era necessário recarregar ou reiniciar o apparmor após cada alteração de perfil e, em seguida, reiniciar o navegador. Várias vezes eu fui enganado em pensar que uma mudança estava funcionando apenas para que falhasse depois de algumas horas. Ainda estou recebendo algumas mensagens do apparmor ao executar o teste do navegador java, mas nenhuma parece impedir que ele funcione.

    
por Dude4Linux 01.08.2013 / 19:31