IReport / NullPointerException

2 respostas
R

Prezados colegas, boa noite,

Estou com o problema ainda nao solucionado NullPointerException, ocasionado
pela execução de um relatório que utiliza IReport, invocado pelo Java.
Abaixo descrevo os passos seguidos para a construção do referido relatório no
IReport, pois acho que o erro esta na construção deste.

1- Serão listados quatro campos conforme lay-out abaixo

Código         Nome  da  Agencia           Lacre        Pacotes
  xxxx     aa---------------------------aa   xxxxxxx         xxx
  xxxx     aa---------------------------aa   xxxxxxx         xxx

2- Procedimentos feito no IReport.
2.1- Foram criados os quatro campos (FIELDS), todos String.
cage, nome, lacr e paco (TUDO MINUSCULO)

2.2- Foram criados no Detail, os quatro campos correspondentes:
       $F{cage}
       $F{nome}
       $F{lacr}
       $F{paco}

2.3- Criação do DataSource (ATENCAO, aqui estao as minhas duvidas)!!!!
       2.3.1- Tentei criar os tipos abaixo e nenhum deles funcionou no Java.
                 CustomJRDataSource
                 Empty data source
                 JavaBeans set DataSource

       ** Gostaria que me apontassem qual o tipo a ser definido, conforme a
            mnha aplicação abaixo descrita. Podem citar todos os passos neces-
            arios para a criação, inclusive com o TEST.

2.4- Compilação do relatório (arquivo .jasper foi gerado).

3- Procedimentos feitos no aplicativo Java.
Os diretórios foram colocados corretamente, e a execução gerou a excessao
NullPointerException. O arquivo .Jasper foi localizado, pelo contrario a mensagem seria FileNotFound.

Abaixo estão os fontes para quem puder analisar e fazer funcionar,

Grato a todos que colobararem.

public class Agencia implements Comparable {

private String cage;

private String nome;

private String paco;

private String lacr;

private int numero;
private static boolean ordena;

public Agencia() {

//

}

public Agencia(String cage, String nome, String lacr, String paco) {

this.cage = cage;

this.nome = nome;

this.lacr = lacr;

this.paco = paco;

}

@Override

public int compareTo(Agencia outra) {

if (ordena == true) { return (getNome().compareTo(outra.getNome())); }

else return 0;

//else return (getCage.compareTo(outra.getCage()));

}

public String getCage() { return cage; }
public void setCage(String cage) { this.cage = cage; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

?.

}

= = = = = = = = = = = = = = = =

import net.sf.jasperreports.engine.JRField;
public interface JRDataSource {

public Object getFieldValue(JRField jrFields);

public boolean next();

}

= = = = = = = =  = = = = = = =

import java.util.Iterator;

import java.util.Vector;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRField;
public class AgenciaJRDataSource implements JRDataSource {

private Iterator iterator;

private Agencia cursor;

public AgenciaJRDataSource(Vector agencia) {

super();

iterator = agencia.iterator();

}

public boolean next() throws JRException {

boolean retorno = iterator.hasNext();

if (retorno) { cursor = iterator.next(); }

return retorno;

}

public Object getFieldValue(JRField nome) throws JRException {

Agencia agencia = cursor;

if (nome.getName().equals(cage)) { return agencia.getCage(); }

if (nome.getName().equals(nome)) { return agencia.getNome(); }

if (nome.getName().equals(lacr)) { return agencia.getLacr(); }

if (nome.getName().equals(paco)) { return agencia.getPaco(); }

return null;

}

}

= = = = = =  = = = = =  = = =

import java.util.Vector;

import net.sf.jasperreports.engine.JRDataSource;

public class AgenciaJRDadosFabrica {
private static JRDataSource dados;

public static JRDataSource criacaoDosDados() {

if (dados    == null) {

String cage = 1908;

String nome = CSO BH;

String lacr = 7234578;

String paco = 1;

Agencia ag  = new Agencia(cage, nome, lacr, paco);

Vector vitor = new Vector();

vitor.add(ag);

cage        = 0012;

nome        = SETE LAGOAS;

lacr        = 1234678;

paco        = 10;

ag          = new Agencia(cage, nome, lacr, paco);

vitor.add(ag);

cage        = 0020;

nome        = MATOZINHOS;

lacr        = 4444444;

paco        = 7;

ag          = new Agencia(cage, nome, lacr, paco);

vitor.add(ag);

cage        = 0022;

nome        = PRUDENTE DE MORAIS;

lacr        = 3245671;

paco        = 4;

ag          = new Agencia(cage, nome, lacr, paco);

vitor.add(ag);

//= = = = = =

dados       = new AgenciaJRDataSource(vitor);

System.out.println(Passou dentro do criacaoDosDados);

} else System.out.println(Passou FORA do criacaoDosDados);

return dados;

}

}

= = = = = = = = = = =  = = = = =

import java.util.HashMap;

import java.util.Map;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.view.JasperViewer;
public class GerarRelatorio {

public static void gerarRelatorio(JRDataSource source) throws JRException {

Map map = new HashMap();

String jaspa = “…/dist/Folha_A4.jasper;

String visao = “…/dist/Folha_A4.jrprint;

jaspa        = “…/teste/dist/Folha_A4.jasper;

JasperFillManager.fillReport(jaspa, map, source);

JasperViewer.viewReport(visao, false);

}
public static void main (String[] args) {

try {

System.out.println(Antes da emissao do relatorio);
GerarRelatorio.gerarRelatorio(AgenciaJRDadosFabrica.criacaoDosDados());
  System.out.println("Depois da emissao do relatorio");
}catch (JRException e) { e.printStackTrace(); }
}

}

= = = = = = = = = =

2 Respostas

drsmachado
1 - Quando colocar código, por favor, utilize
...[code]
[/code] 2 - Onde está o erro? Em que momento é apresentado?
R

No momento da execucao do programa no Java. No GerarRelatorio no comando abaixo:
JasperFillManager.fillReport(jaspa, map, source);

Grato.

Criado 15 de novembro de 2010
Ultima resposta 16 de nov. de 2010
Respostas 2
Participantes 2