IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

JasperReport problème avec les chemins relatif


Sujet :

Jasper

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Février 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 48
    Points : 38
    Points
    38
    Par défaut JasperReport problème avec les chemins relatif
    Salut a vous tous!

    Je veux faire un rapport pour mon application J2EE (Hibernate et JSF) avec JasperReports,
    j'utilise pour cela iReport avec lequel j'ai généré le fichier materiels.jrxml necessaire pour mon rapport, après j'ai crée une classe java JReport.java

    dont le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
     
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
     
    import org.postgresql.Driver;
     
    public class JReport {
     
        public  String genererPDFMat() {
     
            // - Paramètres de connexion à la base de données
            String url = "jdbc:postgresql://localhost:5432/mat";
            String login = "postgres";
            String password = "******";
     
            try {
                // - Connexion à la base
                Driver monDriver = new org.postgresql.Driver();
                DriverManager.registerDriver(monDriver);
                Connection connection = DriverManager.getConnection(url, login, password);
     
                // - Chargement et compilation du rapport
                JasperDesign jasperDesign = JRXmlLoader.load("c:\\materiels.jrxml");
                JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
     
                // - Paramètres à envoyer au rapport
                Map parameters = new HashMap();
                parameters.put("Titre", "Titre");
     
                // - Execution du rapport
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
     
                // - Création du rapport au format PDF
                JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\materiels.pdf");
            } catch (JRException e) {
     
                e.printStackTrace();
            } catch (SQLException e) {
     
                e.printStackTrace();
            } finally {
                connection.close();
            }
    return null;
        }
     
     
    }
    mon probleme c'est que le chemin de materiels.jrxml est absolu, alors que je desire qu'il sera relatif a l'application (parceque je désire la deployer sous Linux) !


    Avez vous une idéé?

  2. #2
    Membre à l'essai

    Profil pro
    ing. en développement
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : ing. en développement

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 19
    Points
    19
    Par défaut
    par exemple: si ta classe se trouve dans le fichier main/classes et ton report se trouve dans main/resources/reports

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    URL urlMateriels = this.getClass().getClassLoader().getResource(
    				"resources/reports/materiels.jrxml");
    JasperDesign jasperDesign = JRXmlLoader.load(url.getPath().toString());
    tu pourrais aussi utiliser getResourceAsStream et passer ce Stream à la methode load.

  3. #3
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Euuuh je ne vois ni JSF ni Hibernate dans ton application

    Citation Envoyé par baradoss Voir le message
    Salut a vous tous!

    Je veux faire un rapport pour mon application J2EE (Hibernate et JSF) avec JasperReports,
    j'utilise pour cela iReport avec lequel j'ai généré le fichier materiels.jrxml necessaire pour mon rapport, après j'ai crée une classe java JReport.java

    dont le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
     
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
     
    import org.postgresql.Driver;
     
    public class JReport {
     
        public  String genererPDFMat() {
     
            // - Paramètres de connexion à la base de données
            String url = "jdbc:postgresql://localhost:5432/mat";
            String login = "postgres";
            String password = "******";
     
            try {
                // - Connexion à la base
                Driver monDriver = new org.postgresql.Driver();
                DriverManager.registerDriver(monDriver);
                Connection connection = DriverManager.getConnection(url, login, password);
     
                // - Chargement et compilation du rapport
                JasperDesign jasperDesign = JRXmlLoader.load("c:\\materiels.jrxml");
                JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
     
                // - Paramètres à envoyer au rapport
                Map parameters = new HashMap();
                parameters.put("Titre", "Titre");
     
                // - Execution du rapport
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
     
                // - Création du rapport au format PDF
                JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\materiels.pdf");
            } catch (JRException e) {
     
                e.printStackTrace();
            } catch (SQLException e) {
     
                e.printStackTrace();
            } finally {
                connection.close();
            }
    return null;
        }
     
     
    }
    mon probleme c'est que le chemin de materiels.jrxml est absolu, alors que je desire qu'il sera relatif a l'application (parceque je désire la deployer sous Linux) !


    Avez vous une idéé?
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  4. #4
    shuryyy
    Invité(e)
    Par défaut
    Attention aux "/" sous linux il me semble qu'ils sont dans l'autre sens

    Sinon moi dans mon action pour avoir le path de l'application qui tourne sur le serveur j'utilise une méthode "getPath()" qui me donne le path de l'application sur le serveur et j'y rajoute où se trouve les fichier jrxml dans l'appli.

    Shury.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/01/2013, 13h29
  2. [Doctrine] Problème avec les identifiants relatifs.
    Par jeanchristophe22 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/05/2011, 11h48
  3. Problème avec les Identifiants relatifs
    Par PodBanane dans le forum Débuter
    Réponses: 6
    Dernier message: 10/06/2009, 14h33
  4. problème avec les liens relatifs
    Par Balbuzard dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2009, 15h04
  5. problème avec les chemins de répertoire
    Par psychoBob dans le forum Langage
    Réponses: 12
    Dernier message: 28/05/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo