0

I need to use JasperReport. I had used IReport5.5 some time ago, but now with Java 8 iReport does not run. Instead, I installed JasperSoftStudio 6.3.1 to design my jrxml files.

The Problem is that before I used the jasperreport 5.2 that accept very well for the java code:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperCompileManager;

public class Main {

    public static void main(String[] argv) throws Exception {

        Class.forName("org.postgresql.Driver");
        Connection conexion = DriverManager.getConnection(
                "jdbc:postgresql://127.0.0.1:5432/database", "postgres",
                "password");


        JasperCompileManager.compileReportToFile(
                "input.jrxml",
                "input.jasper");

        JasperReport reporte = (JasperReport) JRLoader.loadObject("input.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, null, conexion);

        JRExporter exporter = new JRPdfExporter();

        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new java.io.File("output.pdf"));
        exporter.exportReport();


    }
}

However, designing my reports with JasperSoftStudio the old version of jasperreport 5.2 does not accept it. I update my jasperversion to 6.3.0 from https://sourceforge.net/projects/jasperreports/files/jasperreports/ but now the function loadObject is deprecated. Searching a posible solution a found in http://amanuva.blogspot.cl/2016/10/060-conexion-con-informes-desde-java.html the following way

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;


public class JavaMainClass {
    public static void main(String[] argv) throws Exception {
        Class.forName("org.postgresql.Driver");
        Connection conexion = DriverManager.getConnection(
                "jdbc:postgresql://127.0.0.1:5432/database", "postgres",
                "password");

        JasperReport jasperReport = JasperCompileManager.compileReport("input.jrxml");
        JasperPrint jprint = (JasperPrint) JasperFillManager.fillReport("input.jasper", null, conexion);
        JasperExportManager.exportReportToPdfFile(jprint, "output.pdf");

    }
}

But, I get this error

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:81)
    at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:102)
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:99)
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:76)
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59)
    at net.sf.jasperreports.engine.JasperCompileManager.getDefaultInstance(JasperCompileManager.java:200)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:575)
    at JavaMainClass.main(JavaMainClass.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more

Any suggestion is welcome

Alex K
  • 22,315
  • 19
  • 108
  • 236
henryr
  • 169
  • 1
  • 15
  • 2
    Possible duplicate of [NoClassDefFoundError: org/apache/commons/logging/LogFactory](http://stackoverflow.com/questions/25376089/noclassdeffounderror-org-apache-commons-logging-logfactory) – Alex K Mar 30 '17 at 07:08

1 Answers1

0

You seem to be missing the Apache commons-logging library from your classpath. Are you using a dependency management tool like Maven? If not, it might be a good time to start... :)

Catchwa
  • 5,845
  • 4
  • 31
  • 57