Olá a todos,
Estou usado o ireport4.0 para geração de relatório na minha página.Qdo clica no botão aciono o método geraRelalatorio()
public void geraRelalatorio(ActionEvent event) {
Connection conn = new ConnectionFactory().getConnection();
HashMap mapa = new HashMap();
try{
relatorio = JasperFillManager.fillReport("report1.jasper", mapa, conn);
JasperViewer.viewReport(relatorio, false);
}catch (Exception e) {
e.printStackTrace();
}
}
public class ConnectionFactory {
public Connection getConnection() {
try {
return DriverManager.getConnection("jdbc:mysql://localhost/TAD","root","root");
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}
}
O relatório está na pasta WebContent do projeto.
Está retornado o erro:
java.lang.NullPointerException
at br.com.csefet.tad.ChequeHandler.geraRelalatorio(ChequeHandler.java:167)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Tentei usar o getRealPath com ServletContext dessa forma:
public class ChequeHandler{
private ServletContext context = null;
.....
public void init(ServletConfig config) throws ServletException {
this.context = config.getServletContext();
}
public void geraRelalatorio(ActionEvent event) {
Connection conn = new ConnectionFactory().getConnection();
HashMap mapa = new HashMap();
JasperPrint relatorio = null;
try{
String jasperFile = context.getRealPath("report1.jasper");
relatorio = JasperFillManager.fillReport(jasperFile, mapa, conn);
JasperViewer.viewReport(relatorio, false);
}catch (Exception e) {
e.printStackTrace();
}
}
Mas sempre retorna java.lang.NullPointerException
Alguem tem idéia?
Obrigada