Author Topic: Donde guardar archivos para que el JAR sepa donde están. El icono y los JASPER.  (Read 33 times)

Jojanes011

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • View Profile
Tengo los siguientes métodos para llamar reportes y el icono de mi aplicación.

Code: [Select]
public void reporteArticulos () throws IOException,JRException{
    //File file = new File("");
    JasperReport archivo = JasperCompileManager.compileReport("Articulos.jrxml");
    Map parametros = new HashMap();
        parametros.put("mes", UltimosArticulos.mesArticulos.getSelectedItem());
        parametros.put("año", Integer.parseInt((String) UltimosArticulos.añoArticulos.getSelectedItem()));
        parametros.put("logo", "src/Images/logo_roble.png");
    Conectar con = new Conectar("jdbc:mysql://localhost/papeleria");
   JRDataSource data = new JREmptyDataSource();
    JasperPrint prin = JasperFillManager.fillReport(archivo, parametros,con.getConnection());
   JasperExportManager.exportReportToPdfFile(prin,"reporteArticulos.pdf");
    JasperViewer ver = new JasperViewer (prin,false);
    ver.setVisible(true);
    ver.setTitle("Reporte de Artículos");
}

Code: [Select]
setIconImage(new ImageIcon (getClass().getResource("../Images/iconoLogo.png")).getImage());
El jar no se me ejecuta si utilizo estos metodos he investigado y me dicen que es por la ruta de los archivos,he intentado ponerlos en varias direcciones y no me funciona. Si alguien sabe donde los debo guardar, Gracias.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5453
  • Karma: 12
    • View Profile
    • Apuntes de programación
Hola:

Entiendo que te refieres a ajecutar el jar fuera del IDE que uses (eclipse, netbeans, idea o el que sea).

El trozo

Code: [Select]
setIconImage(new ImageIcon (getClass().getResource("../Images/iconoLogo.png")).getImage());
Si usas getClass().getResource(), el fichero tiene que estar dentro del jar, empaquetado junto con los class. Dentro del jar, al usar getClass(), el directorio es el directorio donde esté el fichero .class al que pertenece este código. Desde ahí, habría que seguir el path relativo que has puesto a ver si cuadra. Una forma más sencilla sería poner ahí un path absoluto, estilo

Code: [Select]
setIconImage(new ImageIcon (getClass().getResource("/Images/iconoLogo.png")).getImage());
con lo que dentro del jar debería haber en el primer nivel un directorio Images y dentro el icono.


Por otro lado, los ficheros que referencias por ahi

Code: [Select]
JasperReport archivo = JasperCompileManager.compileReport("Articulos.jrxml");
...
parametros.put("logo", "src/Images/logo_roble.png");

al ser ficheros normales (no dentro del class, por no cogerlos con getClass().getResource(), ni classloader ni esas cosas), deben estar Articulos.jrxml en el mismo directorio en el que este el jar y el logo_roble.png, en el directorio donde esté el jar tiene que haber un directorio src que tenga dentro un directorio Images que a su vez tenga dentro un logo_robles.png.

Si tus imagenes están dentro del jar, echa un ojo a esto https://stackoverflow.com/questions/13598655/how-to-add-image-as-parameter-from-projects-classpath-in-jasper-reports

Saludos.

 

ey