Erro ao visualizar jasper!

4 respostas
I

Pessoal esse é o código onde o erro ta acontecendo:

public JasperPrint gerar(String nome_relatorio){
        try {
            Connection con = Conexao.getConnection();
            HashMap map = new HashMap();
            String arquivoJasper = nome_relatorio+".jasper";
            print = JasperFillManager.fillReport(arquivoJasper, map, con);
		} catch (Exception ex) {
            System.out.println(ex.getCause());
		}
		return print;
	}

O erro…

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
        at java.lang.Class.getDeclaredField(Class.java:1880)
        at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1610)
        at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
        at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
        at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        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.defaultReadObject(ObjectInputStream.java:480)
        at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:736)
        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.readObject(ObjectInputStream.java:351)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:94)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
        at pkgRelatorios.Relatorios.gerar(Relatorios.java:22)
        at pkgFrames.Login.jButton1ActionPerformed(Login.java:110)
        at pkgFrames.Login.jPasswordField1ActionPerformed(Login.java:119)
        at pkgFrames.Login.access$000(Login.java:10)
        at pkgFrames.Login$1.actionPerformed(Login.java:43)
        at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
        at javax.swing.JTextField.postActionEvent(JTextField.java:705)
        at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
        at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
        at javax.swing.JComponent.processKeyBinding(JComponent.java:2849)
        at javax.swing.JComponent.processKeyBindings(JComponent.java:2884)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2812)
        at java.awt.Component.processEvent(Component.java:5993)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4583)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:704)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:969)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:841)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:668)
        at java.awt.Component.dispatchEventImpl(Component.java:4455)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 71 more

É nessa linha que isso acontece:

print = JasperFillManager.fillReport(arquivoJasper, map, con);

Alguem pode me ajudar? Sou novo com JasperReports ainda e não sei oq fazer! Vlw

4 Respostas

Leozin

o commons-logging.jar está no teu classpath?

Cherubini

Fora os jars do Jasper ele tem mais as dependencias do commons

que são: commons-beanutils.jar
commons-collections.jar
commons-logging.jar

abraço

I

Consegui!!

coloquei os seguintes jars:

commons-beanutils.jar
commons-collections.jar
commons-logging.jar
commons-digester.jar

Obrigado aos dois que me responderam!

I

Agora o problema é outro:

Fiz um relatório que contem um subreport…então preciso chamar o relatorio principal via java mas as querys dos 2 relatorios serão passados pela aplicação…oq tentei fazer foi o seguinte:

Compilar o subreport que o principal vai usar, baseado na query passada para o método para gerar o .jasper.

private void compilaRelatorio(String arquivoJRXml,String query){
        try {
            String arquivoJasper = path+"SubFam1.jasper";
            JasperDesign desenho = JRXmlLoader.load(arquivoJRXml);
            JasperReport relatorio = JasperCompileManager.compileReport(desenho);
            ResultSet rs = Conexao.getStatement().executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            Map parametros = new HashMap();
            JasperFillManager.fillReportToFile(relatorio,arquivoJasper, parametros, jrRS);
            //JasperViewer.viewReport(arquivoJasper,false);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Esse comentário é pq testei o resultado e o subrelatório é exibido normalmente.

Depois compilo o principal:

public JasperPrint relatorioFamilia(){
        try{
            compilaRelatorio(subRelFamilias1,"Select * From Responsáveis Where `Ficha` = "+ficha);
            JasperDesign desenho = JRXmlLoader.load(relFamilias);
            JasperReport relatorio = JasperCompileManager.compileReport(desenho);
            ResultSet rs = Conexao.getStatement().executeQuery("Select * From Responsáveis Where `Ficha` = "+ficha);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            Map parametros = new HashMap();
            return JasperFillManager.fillReport(relatorio, parametros, jrRS);
        }catch(Exception ex){
            ex.printStackTrace();
            return new JasperPrint();
        }
    }

Mas ele da erro na linha:

return JasperFillManager.fillReport(relatorio, parametros, jrRS);
java.lang.ClassCastException: net.sf.jasperreports.engine.JasperPrint cannot be cast to net.sf.jasperreports.engine.JasperReport
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:321)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:270)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:260)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:486)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1427)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:729)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:256)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:114)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:911)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:833)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:628)
        at pkgRelatorios.Relatorio.relatorioFamilia(Relatorio.java:73)
        at pkgRelatorios.Relatorio.exibir(Relatorio.java:41)
        at pkgFrames.Login.jButton1ActionPerformed(Login.java:108)
        at pkgFrames.Login.jPasswordField1ActionPerformed(Login.java:117)
        at pkgFrames.Login.access$000(Login.java:9)
        at pkgFrames.Login$1.actionPerformed(Login.java:42)
        at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
        at javax.swing.JTextField.postActionEvent(JTextField.java:705)
        at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
        at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
        at javax.swing.JComponent.processKeyBinding(JComponent.java:2849)
        at javax.swing.JComponent.processKeyBindings(JComponent.java:2884)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2812)
        at java.awt.Component.processEvent(Component.java:5993)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4583)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:704)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:969)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:841)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:668)
        at java.awt.Component.dispatchEventImpl(Component.java:4455)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Alguem pode me dar uma luz!?

Criado 5 de agosto de 2009
Ultima resposta 8 de ago. de 2009
Respostas 4
Participantes 3