[RESOLVIDO] Problema ao gerar relatório jasper

Olá a todos.

Bem pessoal, eu estou postando aqui, porque há mais de uma semana eu estou enfrentando sérios problemas para gerar o meu relatório jasper.

Eu baixei o pacote jasperreport3.0.0, baixei tbm o ireport3.0.0. Quase comi o site da sourceforge (rs), lendo as explicações, configurações, as dependências dos pacotes. Baixei esses pacotes tbm. Mas eu ainda não obtive sucesso pra obter o meu relatório.

No início era problema que não encontrava o arquivo. Era o erro que dava de nullpointer.

Depois disso, agora não dá mais o problema de nullpointer. Agora dá o problema de “O documento não contém páginas!”.

Se alguém puder dar uma luz.

O relatório que eu fiz no ireport é bem simples. Só com um texto estático, só pra exibir mesmo. Mas nada.

O melhor tutorial que já vi em nosso idioma se encontra no site do autor Edson:

www.integrator.com.br

Vai até a área de downloads, apresentada no link de entrada.

http://www.guj.com.br/posts/list/95909.java#516194

Acho que seu caso é o mesmo :thumbup:

Desde de já. Obrigado por responderem.

Djemacao, valeu pelos tutoriais. Eles parecem ser muito bons, bem detalhados. Eu tô lendo eles.

Icegatti, valeu pelo link. Eu tentei fazer o exemplo que tava lá só que não deu certo.

Agora tá dando outro erro. O erro é esse:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: relatorios\Relatorio_sem_nome_2.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
at teste.FazerRelatorio.(FazerRelatorio.java:39)
at teste.FazerRelatorio.main(FazerRelatorio.java:71)
Caused by: java.io.FileNotFoundException: relatorios\Relatorio_sem_nome_2.jasper
… 4 more

Abaixo eu tô colocando a classe, igual estava lá no exemplo:

[code] public FazerRelatorio() {

try {

    Map parameters = new HashMap();

    JasperPrint print = JasperFillManager.fillReport( "/relatorios/Relatorio_sem_nome_2.jasper", parameters, new JRDataSource() {

	private int max = 3;
	private int cont = 0;
	private String valor;

	public Object getFieldValue(JRField jrField) throws JRException {

	    return "main";
	}

	public boolean next() throws JRException {
	    // TODO Auto-generated method stub
	    if (cont++ >= max) {
		System.out.println("false");
		return false;
	    } else {
		System.out.println("true");
		return true;
	    }
	}
    });
    JasperViewer.viewReport(print, true);
    
} catch (JRException ex) {
    Logger.getLogger(AjudaGuj.class.getName()).log(Level.SEVERE, null, ex);
}

}


public static void main( String[] args ) {
new FazerRelatorio();
}[/code]

[quote=Orlando F.]Desde de já. Obrigado por responderem.

Djemacao, valeu pelos tutoriais. Eles parecem ser muito bons, bem detalhados. Eu tô lendo eles.

Icegatti, valeu pelo link. Eu tentei fazer o exemplo que tava lá só que não deu certo.

Agora tá dando outro erro. O erro é esse:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: relatorios\Relatorio_sem_nome_2.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
at teste.FazerRelatorio.(FazerRelatorio.java:39)
at teste.FazerRelatorio.main(FazerRelatorio.java:71)
Caused by: java.io.FileNotFoundException: relatorios\Relatorio_sem_nome_2.jasper
… 4 more

Abaixo eu tô colocando a classe, igual estava lá no exemplo:

[code] public FazerRelatorio() {

try {

    Map parameters = new HashMap();

    JasperPrint print = JasperFillManager.fillReport( "/relatorios/Relatorio_sem_nome_2.jasper", parameters, new JRDataSource() {

	private int max = 3;
	private int cont = 0;
	private String valor;

	public Object getFieldValue(JRField jrField) throws JRException {

	    return "main";
	}

	public boolean next() throws JRException {
	    // TODO Auto-generated method stub
	    if (cont++ >= max) {
		System.out.println("false");
		return false;
	    } else {
		System.out.println("true");
		return true;
	    }
	}
    });
    JasperViewer.viewReport(print, true);
    
} catch (JRException ex) {
    Logger.getLogger(AjudaGuj.class.getName()).log(Level.SEVERE, null, ex);
}

}


public static void main( String[] args ) {
new FazerRelatorio();
}[/code][/quote]

passa o caminho inteiro do relatorio. C:…

Tenta passar um InpuStream

String reportDefinition = “/relatorios/Relatorio_sem_nome_2.jasper”;

InputStream reportDefinitionStream = getClass().getResourceAsStream(reportDefinition);

JasperFillManager.fillReport(reportDefinitionStream,parametros, SuaConexão);

1 curtida

Galera valeu por todos que ajudaram.

Até que enfim funfo! :smiley:

A solução tem haver com o que o Icegatti passou. O relatório precisa ter algum retorno.

Eu vou colocar aqui o trecho do código que o Icegatti passou, com os valores do meu relatório.

try {
		
	    URL arquivo = getClass().getResource( "/relatorios/Relatorio_sem_nome_2.jasper" );	    
	    JasperReport jasperReport = (JasperReport) JRLoader.loadObject( arquivo );
	    
	    Map map = null;
	    Connection con = null;	    
	    
	    // Aqui eu estou passando um jasperReport. Mas eu testei com um inputStream como Cristiano.Zanata disse e funcionada tbm. :)
	    JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, map, new JRDataSource() {

		private int max = 3;
		private int cont = 0;
		private String valor;

		public Object getFieldValue(JRField jrField) throws JRException {

		    return "main";
		}

		public boolean next() throws JRException {
		    // TODO Auto-generated method stub
		    if (cont++ >= max) {
			System.out.println("false");
			return false;
		    } else {
			System.out.println("true");
			return true;
		    }
		}
	    });
	    
	    JasperViewer jasperViewer = new JasperViewer( jasperPrint, false );
	    jasperViewer.setVisible( true );
	   
	    } catch (JRException ex) {
		Logger.getLogger(TentandoFazerUmRelatorio.class.getName()).log(Level.SEVERE, null, ex);
	    }

Pessoal! Valew msm pela força. Já fazia quase 2 semanas que eu tava batendo cabeça com isso.

Um abraço a todos. :slight_smile:

1 curtida

A Paz amigo !!

Tente criar as tabelas e inserir dados nelas, pois este erro aconteceu comigo tb. :wink: