No se como solucionarlo, adjunto el código por si facilita las cosas:
Código:
muchas gracias import java.util.*; import java.sql.*; import java.sql.Date; import java.awt.event.*; import java.net.URL; import java.net.URLClassLoader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.lang.String; /*Librerías necesarias para Jasper Reports*/ import org.apache.commons.beanutils.*; import org.apache.commons.collections.*; import org.apache.commons.digester.*; import org.apache.commons.logging.*; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.view.*; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.engine.JRException; public class Report1 extends Thread { cConnection conexion; public void run () { try { String urlMaestro = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper"; String urlSubreporte = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4_subreport0.jasper"; //URL urlMaestro = this.getClass().getResource("C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper"); //URL urlSubreporte = this.getClass().getResource("C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4_subreport0.jasper"); if (urlMaestro == null) { System.out.println("No encuentro el archivo del reporte maestro."); System.exit(2); } if (urlSubreporte == null) { System.out.println("No encuentro el archivo del subreporte."); System.exit(2); } JasperReport masterReport = null; try { masterReport = (JasperReport) JRLoader.loadObject(urlMaestro); } catch (JRException e) { System.out.println("Error cargando el reporte maestro: " + e.getMessage()); System.exit(3); } JasperReport subReport = null; try { subReport = (JasperReport) JRLoader.loadObject(urlSubreporte); } catch (JRException e) { System.out.println("Error cargando el subreporte: " + e.getMessage()); System.exit(3); } //Ruta del archivo jasper // String fileName = "C:/Archivos de programa/JasperSoft/iReport-3.0.0/Reporte modelo3005_version4.jasper"; //Obtener una conexion a la base de datos conexion = new cConnection(); Connection con = conexion.mkConection(); ResultSet rs = null; Statement stm = con.createStatement(); String strSQL = "SELECT Budget.Project,Budget.Date,Company.IdentityCard,Company.Name,Expenditures.Budget," + "Expenditures.Hito,Expenditures.Description,Expenditures.UnitCost,Expenditures.Units,Expenditures.Quota," + "Project.Code,Project.Acronym,Project.Title,Project.Company FROM Budget,Company,Expenditures,Project " + "WHERE Budget.Project=\'ABCDEFG\' AND Budget.Date=\'2008-01-01\';"; //Ejecuta la consulta SQL rs = stm.executeQuery(strSQL); rs.next(); String budgetProject = rs.getString("Project"); java.sql.Date fecha = new java.sql.Date(0); fecha = rs.getDate("Date"); String cif = rs.getString("IdentityCard"); String name = rs.getString("Name"); int budgetexpenditures = rs.getInt("Budget"); int hito = rs.getInt("Hito"); String descripcion = rs.getString("Description"); double unitcost = rs.getDouble("UnitCost"); double units = rs.getDouble("Units"); double quota = rs.getDouble("Quota"); String codigo = rs.getString("Code"); String acronimo = rs.getString("Acronym"); String titulo = rs.getString("Title"); int comp = rs.getInt("Company"); System.out.println("Titulo: "+titulo+" Comp: "+comp); //Trabajar con el result set… strSQL = "SELECT FullName FROM Company WHERE EN="+comp+";"; rs = stm.executeQuery(strSQL); rs.next(); String company = rs.getString("FullName"); //Cerrar todo rs.close(); stm.close(); //Pasamos parametros al reporte Map parameters=new HashMap(); parameters.put("Project",budgetProject); parameters.put("Date",fecha); parameters.put("IdentityCard",cif); parameters.put("Name",name); parameters.put("Budget",budgetexpenditures); parameters.put("Hito",hito); parameters.put("Descripction",descripcion); parameters.put("UnitCost",unitcost); parameters.put("Units",units); parameters.put("Quota",quota); parameters.put("FullName",company); parameters.put("Code",codigo); parameters.put("Acronym",acronimo); parameters.put("Title",titulo); parameters.put("Company",comp); parameters.put("SUBREPORT",subReport); parameters.put("CODE",codigo); parameters.put("DATE",fecha); try{ //Preparación del reporte (reporte diseñado con ireport) JasperPrint jasperPrint=JasperFillManager.fillReport(masterReport,parameters,con); //Se lanza el viewer de jasper, no termina la aplicación al salir JasperExportManager.exportReportToPdfFile(jasperPrint, "H:/reportes/Reportes en pdf/Reporte.pdf"); //Se lanza el Viewer de Jasper, no termina aplicación al salir JasperViewer jviewer = new JasperViewer(jasperPrint,false); jviewer.setVisible(true); //jviewer.show(); }catch (JRException e) { System.out.println("Error llenando el reporte maestro: " + e.getMessage()); try { con.close(); } catch (SQLException e1) { } System.exit(5); } }catch(Exception j) { System.out.println("Mensaje de Error:"+j.getMessage()); } finally{ conexion.closeConnection(); } } public static void main(String[] args){ Report1 thread_exp = new Report1(); thread_exp.run(); } } class cConnection { /*Atributos*/ private String url = ""; private String usr = ""; private String pswd = ""; private Connection con; /*Constructor, carga puente JDBC-ODBC*/ public cConnection() { loadDriver(); } /** * Carga el driver de la conexión a la base de datos */ private void loadDriver() { try { //Instancía de una nueva clase para el puente //sun.jdbc.odbc.JdbcOdbcDriver //El puente sirve entre la aplicación y el driver. Class.forName( "" ); } catch(ClassNotFoundException e) { System.out.println("Error al crear el puente JDBC-ODBC"); } } /** * Obtiene una conexión con el nombre del driver especificado * @param driverName Nombre del driver de la base de datos * @return */ public Connection mkConection() { //url = url + driver; System.out.println("Estableciendo conexión con " + url); try { //Obtiene la conexión con = DriverManager.getConnection( url,usr,pswd); } catch(SQLException sqle) { System.out.println("No se pudo establecer la conexión"); return null; } System.out.println("Conexión establecida con: " + url); //Regresa la conexión return con; } /* Cerrar la conexión. */ public boolean closeConnection() { try { con.close(); } catch(SQLException sqle) { System.out.println("No se cerro la conexión"); return false; } System.out.println("Conexión cerrada con éxito "); return true; } } //class cConnection