JasperReport e Linux

e ae galera…

tenho uma app web que gera relatorios em jasperreport.

tudo funciona muito bem em minha estação de trabalho Windows, onde estão instalados os servidores Tomcat e MySQL para rodar o sistema.

o sistema é hospedado em uma outra maquina com Linux. uso a minha so pra desenvolvimento e a outra é o servidor.

até o momento o sistema nao gerava relatorios em jasperreport.
adicionamos nesta semana mais esta funcionalidade, que em minha maquina roda perfeitamente.

o problema acontece no linux. quando rodo o sistema e faço requisição de relatorio em PDF dá o erro abaixo:

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. 
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) 
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:134) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:141) 
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62) 
...


depois deu este:


HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Servlet execution threw an exception
	org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)


root cause 

java.lang.NoClassDefFoundError
	java.lang.Class.forName0(Native Method)
	java.lang.Class.forName(Class.java:140)
	java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
	net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:58)
	net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:182)
	net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:82)
	net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:74)
	net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:107)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:428)
	br.org.apaecontagem.control.action.pesquisa.PesquisaAction.onExecute(PesquisaAction.java:86)
	br.org.apaecontagem.control.action.pesquisa.PesquisaAction.onExecute(PesquisaAction.java:49)
	br.org.apaecontagem.control.action.GenericAction.execute(GenericAction.java:45)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28

pelo que li o erro é que falta o ambiente grafico no lunux, mas não encontrei uma resposta correta e com a solução.

Aconteceu isso comigo também.
Mandei um e-mail para o administrador do servidor onde o site está hospedado e ele resolveu isso.
Mas não sei exatamente o que foi feito para te ajudar.

que engraçado… fiz o mesmo e ele resolveu!!!

mandei um email pro administrador e ele resolveu.

é que precisa do XWindows startado para rodar o japer…

mais eu queria saber o que precisamente, pois eu sou o administrador e nao queria startar ele todo, por causa da memoria.

alguem tem alguma dica?

Resolvi esse problema usando, na linha de comando do Linux, o “export” abaixo antes dar o startup no Tomcat

export CATALINA_OPTS=’-Djava.awt.headless=true’

Dessa forma não é necessário ter um servidor X11 instalado e rodando no Linux.

[quote=saraivalc]Resolvi esse problema usando, na linha de comando do Linux, o “export” abaixo antes dar o startup no Tomcat

export CATALINA_OPTS=’-Djava.awt.headless=true’

Dessa forma não é necessário ter um servidor X11 instalado e rodando no Linux.

[/quote]

Boa tarde Pessoal!

saraivalc estou com este problema e não consigo resolver. Já inclui a linha

CATALINA_OPTS=’-Djava.awt.headless=true’

no meu catalina.sh mas dai da este outro erro:

SEVERE: Error happened while running the report.
java.lang.ExceptionInInitializerError
at org.eclipse.birt.report.engine.emitter.wpml.WordEmitter.accountPageProp(WordEmitter.java:350)
at org.eclipse.birt.report.engine.emitter.wpml.WordEmitter.startPage(WordEmitter.java:195)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.start(HTMLPageLM.java:188)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layoutChildren(HTMLPageLM.java:138)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:84)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:90)
at org.eclipse.birt.report.engine.api.impl.RenderTask$PageRangeRender.render(RenderTask.java:532)
at org.eclipse.birt.report.engine.api.impl.RenderTask.render(RenderTask.java:254)
at org.eclipse.birt.report.service.ReportEngineService.renderReport(Unknown Source)
at org.eclipse.birt.report.service.BirtViewerReportService.renderReport(Unknown Source)
at org.eclipse.birt.report.service.actionhandler.BirtRenderReportActionHandler.__execute(Unknown Source)
at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(Unknown Source)
at org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment.doService(Unknown Source)
at org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment.service(Unknown Source)
at org.eclipse.birt.report.servlet.ViewerServlet.__doGet(Unknown Source)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doGet(Unknown Source)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.awt.HeadlessException
at sun.awt.HeadlessToolkit.getScreenResolution(HeadlessToolkit.java:189)
at org.eclipse.birt.report.engine.emitter.wpml.WordUtil.(WordUtil.java:19)
… 34 more

Estou usando linux Debian 2.6 e Java 1.5
Aguem sabe como solucionar isto? agradeço desde já.

A estrutura de diretórios, assim como o sistema de arquivos do Linux é totalmente diferente do Windows.
No Linux o diretório principal é o /, enquanto que no Windows é C:
Verifique a forma como vc descreve qual o caminho (path) de sua aplicação. :wink:

[quote=Marcio_Nogueira]A estrutura de diretórios, assim como o sistema de arquivos do Linux é totalmente diferente do Windows.
No Linux o diretório principal é o /, enquanto que no Windows é C:
Verifique a forma como vc descreve qual o caminho (path) de sua aplicação. :wink: [/quote]

Então Nogueira! Blza!
Eu já leio neste servidor Linux outros relatórios gerados no BIRT. O erro citado acima acontece quando tento exportar para o word o relatório gerado (o relatório que já esta na tela), usando o recurso de Export Data do BIRT. Então acho que não seja erro de path.
Tem outra ideia?

Obrigado por responder.