Ireport

Olá pessoal,
eu estou fazendo um exemplo
para gerar um relatório com ireport 3.7
mas aparece a seguinte mensagem
no browser:

Erro ao gerar o relatório: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: C:\Documents and Settings\Ricardo\Meus documentos\NetBeansProjects\Relatorio\build\web\WEB-INF\classes\br\eti\furutani\RelLivros.jasper

Será que alguém poderia me dar uma ajuda? :smiley:
Eu não estou conseguindo visualizar o relatório.

[]'s.

Então cara, conseguiu verificar que erro é esse?

java.io.FileNotFoundException. Exceção de arquivo não encontrado. O arquvo .jasper está no diretório que aparece na exceção?

Jóia g4j ?
Eu coloquei o .jasper no diretório:

C:\Documents and Settings\Ricardo\Meus documentos\NetBeansProjects\Relatorio\build\web\WEB-INF\classes\br\eti\furutani

mas mesmo assim continua aparecendo a mensagem qdo eu executo o servlet os arquivos: RelLivros.jasper e RelAutores.jasper,
disaparecem da pasta será que vc g4j ou alguém sabe o que pode estar acontecendo?

[]'s.

Eu coloquei também g4j
os arquivos no diretório:

C:\Documents and Settings\Ricardo\Meus documentos\NetBeansProjects\Relatorio\web\WEB-INF

Mas mesmo assim ainda continua mensagem de

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException

Será que g4j ou alguém poderia me dar uma ajuda?

[]'s.

Jóia g4j eu descobri o diretório correto:

C:\Documents and Settings\Ricardo\Meus documentos\NetBeansProjects\Relatorio\src\java\br\eti\furutani

o arquivo foi encontrado mas agora esta aparecendo a seguinte mensagem no browser:

Erro ao gerar o relatório: java.lang.NullPointerException

Será que vc g4j ou alguém poderia me dar uma ajuda?

[]'s.

poste todo o stacktrace do erro aqui pra nós analisarmos.

Jóia g4j com printStackTracer
está aparecendo a seguinte mensagem:

java.lang.NullPointerException
        at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
        at br.eti.furutani.Relatorio.doPost(Relatorio.java:57)
        at br.eti.furutani.Relatorio.doGet(Relatorio.java:88)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        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:128)
        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:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:619)

Será que tem como vc g4j ou alguém me dar uma ajuda?

[]'s.

O servlet que eu estou usando é o:

public class Relatorio extends HttpServlet {


	public static Connection con;
	public static String banco = "relatorio"; // Nome do banco de dados
	public static String usuario = "root"; // Usuario do banco
	public static String senha = "85246710"; // Senha

	protected void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		conexao(); // Faz a conexão

		// Na variavel pathJasper ficara o caminho do diretório para os relatórios compilados (.jasper)
		String pathJasper = getServletContext().getRealPath(
				"/WEB-INF/classes/br/eti/furutani/")
				+ "/";

		// A variavel path armazena o caminho real para o contexto
		// isso é util pois o seu web container pode estar instalado em lugares diferentes
		String path = getServletContext().getRealPath("/");


		// Parametros do relatorio
		Map parametros = new HashMap();
		// O único parametro que devemos passar é o PathRelAutores
		// é o caminho pro RelAutores.jasper (que foi subtituido pelo
		// valor fixo ?D:/iReport-0.4.0/RelAutores.jasper?)
		parametros.put("PathRelAutores", pathJasper + "RelAutores.jasper");

		try {
			// Aqui ele cria o relatório
			JasperPrint impressao = JasperFillManager.fillReport(pathJasper
					+ "RelLivros.jasper", parametros, con);

			// Grava o relatório em disco em pdf
			JasperManager.printReportToPdfFile(impressao, path
					+ "/RelatorioLivros.pdf");

			// Redireciona para o pdf gerado
			res.sendRedirect("RelatorioLivros.pdf");

		} catch (Exception e) {
                        e.printStackTrace();
			res.getWriter().println("Erro ao gerar o relatório: " + e);
		}
	}
	// Cria a conexão
	public void conexao() {
		try {
			if (con == null || con.isClosed()) {
				Class.forName("com.mysql.jdbc.Driver");
				con = DriverManager.getConnection(
						"jdbc:mysql://localhost:3306/" + banco, usuario, senha);
			}
		} catch (Exception e) {
			System.out.println("não foi possível conectar ao banco ->");
			e.printStackTrace();
		}
	}

	protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		doPost(arg0, arg1);
	}

}

Não sei se isso vai ajudar, eu postar o código
aqui, mas estou precisando da sua ajuda g4j,
ou de alguém.

[]'s.

dê uma verificada na linha abaixo. alguma coisa tá null aí…

JasperPrint impressao = JasperFillManager.fillReport(pathJasper  
                   + "RelLivros.jasper", parametros, con); 

Jóia g4j?
então eu tô até agora na luta aqui e ainda não consegui
eu sei que o null pointer esta ocorrendo na hora de criar
o relatório na linha:

// Aqui ele cria o relatório
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "RelLivros.jasper", parametros, con);

Mas o problema é que eu não sei quem é null,
já debuguei aqui e sempre q cai nessa linha vai direto
pro catch e lança a exception.

Eu acho q deve ser algum problema com o subrelatório
RelAutores.jasper

parametros.put("PathRelAutores", pathJasper + "RelAutores.jasper");

Será que tem como vc g4j ou alguém me dar uma ajuda?

[]'s.