Bom pessoal estou tentando gerar um relatório(ireport) na web utilizando em meu servlet o JRBeanCollectionDataSource e visualizá-lo em pdf. As classes são estas abaixo:
Livro.java
public class Livro {
private String titulo;
private String autor;
private String isbn;
private String editora;
private String descricao;
public Livro(){
}
public Livro(String titulo, String autor, String isbn, String editora, String descricao) {
super();
this.titulo = titulo;
this.autor = autor;
this.isbn = isbn;
this.editora = editora;
this.descricao = descricao;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getEditora() {
return editora;
}
public void setEditora(String editora) {
this.editora = editora;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
}
Inicio.java
import java.sql.*;
import java.text.DecimalFormat;
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.sql.*;
public class rInicio extends HttpServlet
{
boolean status ;
ResultSet rs ;
String desc, rotulo;
public void doGet (HttpServletRequest req , HttpServletResponse res)
throws IOException, ServletException
{
// Caminho do .jasper
//String caminhoRelJasper = "Livros.jasper";
ServletContext context = getServletContext();
byte[] bytes = null;
JasperReport relatorioJasper= null ;
try {
relatorioJasper = (JasperReport)JRLoader.loadObject(context.getRealPath("/WEB-INF/Livros.jasper"));
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// Lista com beans
List listaLivros = getLivros();
// Stream com o .jasper
//InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
// O datasource
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaLivros);
// Parametros do relatorios
Map parametros = new HashMap();
try {
bytes = JasperRunManager.runReportToPdf(relatorioJasper,parametros,ds);
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//JasperPrint impressao = null;
try {
//impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
//JasperViewer viewer = new JasperViewer(impressao, true);
//viewer.setVisible(true);
// envia o relatório em formato PDF para o browser
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream = res.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public List getLivros() {
List listaLivros = new ArrayList();
Livro livro = new Livro();
livro.setTitulo("Use a cabeça! Padrões de Projeto - Design Patterns");
livro.setAutor("Freeman, Eric / Freeman, Elisabeth");
livro.setIsbn("[telefone removido]");
livro.setEditora("Alta Books");
livro.setDescricao("Como você sabe que não quer reinventar a roda (ou, "
+ "pior, um pneu furado), "
+ "então você busca padrões de projetos");
listaLivros.add(livro);
livro = new Livro();
livro.setTitulo("Entendendo e Dominando o Linux");
livro.setAutor("Morimoto, Carlos");
livro.setIsbn("[telefone removido]");
livro.setEditora("Digerati");
livro.setDescricao("Como o nome diz, este livro é uma obra destinada a "
+ "todos aqueles que "
+ "pretendem conhecer na prática e em detalhes os "
+ "principais recursos oferecidos pelo Linux");
listaLivros.add(livro);
livro = new Livro();
livro.setTitulo("Guia de Certificação em Java - Exame CX-310-035");
livro.setAutor("Pereira, Rafael");
livro.setIsbn("[telefone removido]");
livro.setEditora("Ciência Moderna");
livro.setDescricao("Este Guia de Certificação em Java é um livro "
+ "fundamental para preparar os"
+ " candidatos ao exame de programador Java da Sun, "
+ "a primeira e mais "
+ "requisitada certificação desta tecnologia.");
listaLivros.add(livro);
return listaLivros;
}
}
O erro é o seguinte:
java.lang.NullPointerException
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:138)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:83)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:419)
rInicio.doGet(rInicio.java:103)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419)
org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
O que pode ser?