Falla Reportes

El compilar mi jar y llevarlo a otra computadora no me haya el reporte, como debo expecifiar la ruta en la vairable fileName para que encuentre el reporte en cualquier máquina que lleve el reporte.

package reportes;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JRDesignQuery;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class AuxiliarIntermediarios{
       
         private Connection conn;
            private final String login = "root"; //usuario de acceso a MySQL
            private final String password = "*****"; //contraseña de usuario
            private String url = "jdbc:mysql://192.168.10.254/Ventas";
            //private String url = "jdbc:mysql://localhost/Ventas";

            public AuxiliarIntermediarios()
            {        
                try
                {
                    Class.forName("com.mysql.jdbc.Driver"); //se carga el driver
                    conn = DriverManager.getConnection(url,login,password);
                }
                catch (ClassNotFoundException ex)
                {
                    ex.printStackTrace();
                }
                catch (SQLException ex)
                {
                    ex.printStackTrace();
                }
               
               
            }
           
            public void runReporte(String theQuery )
            {

                try
                {  

                    String fileName = System.getProperty("user.dir") +"/src/reportes/ireports/intermediario_auxiliar.jrxml";

                    if (fileName == null)
                    {                
                        System.out.println("No encuentro el archivo del reporte maestro.");
                        System.exit(2);
                    }

                   
                   
                File theFile = new File(fileName);
                JRDesignQuery newQuery = new JRDesignQuery();
                JasperDesign jasperDesign = JRXmlLoader.load(theFile);
                newQuery.setText(theQuery);
                jasperDesign.setQuery(newQuery);
               
                 JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
         
                    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
                    JasperViewer jviewer = new JasperViewer(jasperPrint,false);
                    jviewer.setTitle("Sistema de gestión de Cartera");
                   jviewer.setVisible(true);
                   
                }

                catch (Exception j)
                {
                    System.out.println("Mensaje de Error:"+j.getMessage());
                }
               
            }
           
            public void cerrar()
            {
                        try
                        {
                            conn.close();
                        }
                        catch (SQLException ex)
                        {
                            ex.printStackTrace();
                        }
            }

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Sugerencia:

Sugerencia:
Porqué mejor no meter tus archivos compilados (.jasper) en un package en tu proyecto, y los buscas con un this.getClass().getResourceAsStream("/ruta/reporte/elReporte.jasper"); ... y así ya no tienes que andar creando rutas por cada máquina donde vayas a querer ejecutar tu reporte...

Imagen de neko069

Ah y se me olvidaba, para

Ah y se me olvidaba, para checar si existe o no un archivo, no es sobre el String, porque, obvio ya le estás asignando valor, y por lo tanto nunca vendrá nulo, la validación se hace sobre el objeto File que creas.

String ruta = "bla, bla,bla no importa"; //aquí como en tu ejemplo, le estás asignando valor a tu String y nunca vendrá nulo..

File file = new File( ruta );

    if( file.exists()  ){    //con éste método validas si el archivo existe
        System.out.println( "Si existe el archivo, continúa flujo...." );
    }
    else{
        System.out.println( "Valió, no hay nada, a los batitubos!!!" );
        System.exit( 3.1416 );
}

Así sería la validación ...

EDITO: Por si alguien no se había dado cuenta, los tags de < code > aparte de que hacen que se vea bonito el código, nos hacen más flojos, si le picas a una clase del JDK, te envía a la documentación, y menciono ésto para que des click sobre File y cheques todos los métodos que tienes disponibles para lidiar con archivos....

Solucionado

dentro del directorio donde esta el jar hice un directorio llamado reportes y ahi meti mis reportes

mi variable quedo asi

String fileName ="/reportes//aux_clien.jrxml"

Así quedo sin recurrir a meter los compilados