9 de agosto de 2008

Aplicações swing com o teclado "travado" no linux (Ubuntu)

Já a algum tempo venho tendo um problema "irritante" em aplicações swing no linux (principalmente o Netbeans). Depois de algum uso simplesmente o teclado "travava", nenhuma combinação de teclas passava a ser "ouvida" pela aplicação, apenas eventos de mouse. A única solução seria fechar e abrir novamente a aplicação.
Como muitos usuários de linux (no meu caso Ubuntu) estou utilizando o Compiz para efeitos 3D no Desktop (literalmente "eye candy", mas tem muita coisa que já não consigo mais viver sem heheh). Inicialmente todas as aplicações swing ficavam com a tela em "branco", para resolver isso utilizava-se uma variável de ambiente que mudava o tookit utilizado pelo awt:

AWT_TOOLKIT=MToolkit

Isto resolveu um problema, a aplicação agora era renderizada normalmente. Mas depois apareceu este bug do teclado travado.

Pesquisei durante meses sem sucesso, mas ontem achei a solução, no forum do netbeans. Abaixo reproduzo (traduzido) a solução que foi proposta, e que funcionou no meu caso.

0) Caso tenha colocado utilizado a variável de ambiente AWT_TOOLKIT, remova-a, ela já não é mais necessária, pelos testes que eu fiz as aplicações java já são renderizdas de maneira correta no compiz (só testei com o java 6)

1) Vá no site http://download.java.net/jdk6/binaries/ e baixe o arquivo "Linux self-extrating JDK file" (instalação genérica do jdk pra linux). No post foi citado o release b27, quando fui baixar já tinha a versão b28: jdk-6u10-rc-bin-b28-linux-i586-21_jul_2008.bin, são 76mb (este ainda é o release candidate do java6 update 10, ainda não é a versão final, mas já é utilizável)

2) Renomei o arquivo baixado para jdk-6-linux-i586.bin (necessário para criar o package do Ubuntu, para outras distribuições não é necessário basta executar o instalador)

3) Instalar o java-package (aplicativo que permite converter o .bin para .deb):
sudo apt-get install java-package

4) Criar o pacote .deb para instalação:
make-jpkg jdk-6-linux-i586.bin

5) Basta instalar agora o .deb que foi criado:
sudo dpkg -i sun-j2sdk1.6_1.6.0_i386.deb

6) Depois de instalado basta configurar o java default para o linux
sudo update-alternatives --config java (ele provavelmente deve ser o /usr/lib/j2sdk1.6-sun/bin/java)

7) Fazemos o mesmo para o javac
sudo update-alternatives --config javac

Se você ja tinha o netbeans instalado é preciso alterar o seu arquivo de configuração.

<pasta_netbeans>/etc/netbeans.conf

Nele há uma propriedade chamada netbeans_jdkhome, basta mudar para a pasta onde foi instalado o novo jdk: /usr/lib/j2sdk1.6-sun

Espero que ajude.


Um comentário:

Anônimo disse...

Po kara show ....
resolveu meu problema .. que ja estava me deixando carece !!