java.net.MalformedURLException

publicado por: Anonymous

Estoy teniendo un horrible problema y lo peor de todo es que en la web no encuentro casi nada acerca de esto! estoy haciendo un reporte en java con jaspersoft studio. Hice la plantilla ya (tiene dos parametros) y segui al pie de la letra la guia de la siguiente pagina.

Ok, mi codigo es el siguiente:

public class Reportes{
private Administrador admin;

public Reportes() throws ClassNotFoundException, SQLException{
    admin = new Administrador();
}

public JRViewer obtenerPaciente(String ced) throws JRException{
    HashMap parameters = new HashMap();
    InputStream is = getClass().getResourceAsStream("assets/PerfilPaciente.jrxml");
    JRDesignQuery design = new JRDesignQuery();
    design.setText("SELECT * FROM Pacientes");
    JasperDesign jd = JRXmlLoader.load(is);
    jd.setQuery(design);
    parameters.put("Imagen", ClassLoader.getSystemResource("assets/perfil-azul.png").getPath());
    parameters.put("Cedula",ced);
    JasperReport report = JasperCompileManager.compileReport(jd);
    JasperPrint jp = JasperFillManager.fillReport(report, parameters, admin.obtenerConexion());
    JRViewer jrv = new JRViewer(jp);             
    return jrv;
}
}

Y cuando llamo dicha funcion en mi JDialog, me arroja el siguiente error:

net.sf.jasperreports.engine.JRException: java.net.MalformedURLException
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:251)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:230)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)

Me marca la siguiente linea de codigo:

InputStream is = getClass().getResourceAsStream(“assets/PerfilPaciente.jrxml”);

he intentado colocarlo “/PerfilPaciente.jrml”, “PerfilPaciente.jrxml” y nada. Ni porque esta en la carpeta de projecto.

¿Como podria solucionar esto?

PD: Mis recursos los coloco todo dentro de una carpeta del projecto que cree llamada “assets”, de ahi salen algunas imagenes de mi programa en java tambien, y no me ha dado problemas como este archivo jrxml.

introducir la descripción de la imagen aquí

solución

Ya con lo que subiste entendí mejor… mira hay dos formas de hacerla una es copiar el jrxml en el jar pero para eso deberá estar dentro de la carpeta src/assets/PerfilPaciente.jrxml y con el código que tienes funcionaría.

Ya que lo que intentas es que el recurso esté dentro del jar.

O también podrías hacer de que este como recurso en vez de cargarlo así:

 InputStream is = getClass().getResourceAsStream("assets/PerfilPaciente.jrxml");

Cargalo de la siguiente manera teniendo en cuenta que al subir la aplicación existirá una carpeta donde se ejecute tu programa de nombre assets:

InputStream is = new FileInputStream("assets/PerfilPaciente.jrxml");

Recuerda agregar el import FileInputStream.

 import java.io.FileInputStream; 

Y como dato cultural estas usando ant.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *