Problema com Ireport [RESOLVIDO]

Olá a todos, estou com uma grande dor de cabeça com o Ireport, gostaria de uma ajuda se possível.

Seguinte tenho um relatório principal com 3 colunas de subreport e um subreport que vai sendo mostrado conforme a necessidade.


protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=iso-8859-1");
        response.setCharacterEncoding("iso-8859-1");
        ServletContext sc = getServletContext();
        byte[] bytes = null;
        ArrayList listaLicenc = new ArrayList();

        try {

            
            ArrayList<Etiq> lista = new ArrayList();
            lista.add(new Etiq("Etiqueta de equipamento", "Modelo: -----   Serial: XXXXXXX", "Licença: XXXXXXXXXXXXXXXXXXXXXXXXX"));

			// Populando objetos para o relatorio
            RelatorioLicencas jrds = new RelatorioLicencas(lista);

            // Parametros do relatorio  
            HashMap parameters = new HashMap();
            parameters.put("SUBREPORT_DIR", sc.getRealPath("/Relatorio/"));
            // Lendo arquivo jasper  
            File reportFile = new File(sc.getRealPath("/Relatorio/relatorioLicencas.jasper"));
            // Manuseando os dados para o relatorio 
            bytes = JasperRunManager.runReportToPdf(reportFile.toURL().openStream(), parameters, jrds);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bytes != null) {
                if (bytes.length > 0) {
                    try {
                        response.setContentType("application/pdf");
                        response.setContentLength(bytes.length);
                        response.getOutputStream().write(bytes, 0, bytes.length);
                        response.getOutputStream().flush();
                        response.getOutputStream().close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            }
        }
	}
	
	class RelatorioLicencas implements JRDataSource {

        private List listaLic1 = new ArrayList();
        private List listaLic2 = new ArrayList();
        private List listaLic3 = new ArrayList();
        private boolean pag;
        private int coluna = 1;

        public RelatorioLicencas(ArrayList parEtiquetas) throws Exception {

            for (int i = 0; i < parEtiquetas.size(); i++) {
                Etiq e = (Etiq) parEtiquetas.get(i);
                switch (coluna) {
                    case 1:
                        this.listaLic1.add(e);
                        break;
                    case 2:
                        this.listaLic2.add(e);
                        break;
                    case 3:
                        this.listaLic3.add(e);
                        break;
                }
                coluna++;
                if ((i + 1) % 3 == 0) {
                    coluna = 1;
                }
            }
        }

        @Override
        public boolean next() throws JRException {
            if (pag == false) {
                pag = true;
                return true;
            }
            return false;
        }

        @Override
        public Object getFieldValue(JRField args) throws JRException {
            if (args.getName().equalsIgnoreCase("listaLic1")) {
                return new JRBeanCollectionDataSource(listaLic1);
            }
            if (args.getName().equalsIgnoreCase("listaLic2")) {
                return new JRBeanCollectionDataSource(listaLic2);
            }
            if (args.getName().equalsIgnoreCase("listaLic3")) {
                return new JRBeanCollectionDataSource(listaLic3);
            }
            return null;
        }
    }
	
	
	public class Etiq implements Serializable {

    private String titulo = "";
    private String descricao = "";
    private String licenca = "";
    private boolean flag = false;
	
	// Constructor, sets and gets .....
	
	}

Me retorna o seguinte erro:

GRAVE: java.lang.NullPointerException
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:283)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:327)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:263)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at br.Interface.Imprime.processRequest(Imprime.java:68)
at br.Interface.Imprime.doGet(Imprime.java:230)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)

Estou utilizando as seguintes bibliotecas:
antlr-2.7.7.jar
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-logging-1.1.jar
iText-2.1.7.jar
jasperreports-4.8.0.jar
jasperreports-fonts-4.8.0_0.jar

Olá pessoal,

continuo com problema. Em alguns testes feitos, faço uma chamada direta numa classe Main chamando o JasperReport ele funciona perfeitamente …
Ai testei mas um pouco no servlet e vi que se chamar o Report e o Sub report sem valores nas lista, ele executa e mostrado no browser ?? Alguém tem ideia do pq ??

O erro aí é um NPE… os caso mais clássicos desse erro no iReport ocorrem em operações feita dentro de fields (somas, multiplicações, etc) ou formatações feitas diretamente nos fields, da mesma forma.
Dá uma olhada nisso.
Abraço!

Olá leoramos,

Seguinte não tem operação nenhuma só exibição dos Fields eles são do 3 do tipo String e um boolean para dizer se exibi as informações é só …

Fazendo alguns testes a mais aqui percebo que isso só acontece com textField, tirei as chamadas que fazia dos meus fields, e utilizei variáveis ambiente
e começa da o mesmo problema ex: coloquei pra mostrar qtd de pagina, e ou data de agora … gera a seguinte exceção.

java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
	at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
	at br.Interface.Imprime.processRequest(Imprime.java:100)
	at br.Interface.Imprime.doGet(Imprime.java:343)

Então provavelmente o problema é na tua operação com o Boolean.
Poste o código, por favor.

Encontrei o problema …

Seguinte tinha atualizado o programa ireport da máquina e o jasper do projeto para a versão 4.8.0 , mas o meu classpath do ireport não estava com as extensões corretas,
não sei pq ?? mandei importar as configurações da versão anterior e tudo voltou a funcionar …

No meu classpath do ireport ficou com as seguintes libs:

jasperreports-core-renderer.jar
hsqldb-1.8.0-10.jar
jasperreports-extensions-3.5.3.jar

Tremenda dor de cabeça … Mas funcionou … vlw