Erro java.lang.NoClassDefFoundError: sun.awt.X11GraphicsEnvironment

Depois de um longo tempo (tipo… quase 2 anos :-) ) sem postar nada no blog, resolvi voltar a postar…

Neste post desejo compartilhar um “workaround” que encontrei na NET (depois de uma googlada básica) quando me deparei com um problema esquisito em uma aplicação web “deployada” no JBoss AS. Uma das funcionalidades dessa app faz a geração online de uns relatórios em PDF usando o JasperReports. As vezes a aplicação não consegue gerar o relatório e lança a seguinte exception no log do AS: java.lang.NoClassDefFoundError: sun.awt.X11GraphicsEnvironment. Encontrei algumas explicações na net (refs. [1] e [2]) que dizem, aparentemente, ser uma pala relacionada às bibliotecas gráficas em ambientes Linux/Unix. Segundo o trecho abaixo copiado da ref. [1] as bibliotecas AWT da Sun dependem do sistema de janelas X do Linux.

Sem aprofundar muito na questão de como a JVM abstrai isso do SO… O lance é que em ambientes de produção geralmente o ambiente gráfico do S.O (X11) está ausente. A ref. [1] sugere executar uma versão do X Server sem display (Xvfb), ou seja, o Xvfb executa as operações gráficas em memória. Após rodar o Xvfb deve-se configurar a var. de ambiente $DISPLAY do S.O apontando para esse daemond. Além dessa opção do Xvfb, ele sugere setar a JVM property "-Djava.awt.headless=true" que supostamente resolve o problema. Como a 1º opção é um pouco mais complicada preferi configurar a JVM Property mesmo. Em princípio o problema foi sanado, pelo menos, até o momento.

Caso queira saber masi sobre como usar o Xvfb em ambientes sem o X instalado veja a ref. [3] que mostra um cenário em que foi utilizado um Selenium para realização de testes em um servidor sem ambiente gráfico instalado.

_________
Referências:
[1] http://www.jguru.com/faq/view.jsp?EID=222296
[2] http://www.theserverside.com/discussions/thread.tss?thread_id=16049
[3] http://www.jeveaux.com/blog/2008/xvfb-como-usar-o-selenium-sem-ter-um-x-server/

Honda Accord cog video

Muito louco esse vídeo!!!

The first post!

Resolvi criar este blog para escrever um pouco sobre minhas experiências na área profissional.

Pretendo compartilhar um pouco do que tenho aprendido no mundo da Tecnologia da Informação. Quero registrar algumas dicas que acho interessantes e úteis para o cotidiano de um profissional do mundo JAVA e assuntos correlatos.

Valeu!

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.