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

Java Discussion :

Importation d'un fichier .class sous ubuntu


Sujet :

Java

  1. #1
    Membre du Club

    Inscrit en
    Décembre 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 100
    Points : 43
    Points
    43
    Par défaut Importation d'un fichier .class sous ubuntu
    Bonjour tout le monde,

    Alors, je vous explique mon problème. J'ai un programme java (ExportHtml) qui me permet de générer une fichier html à partir d'un fichier .jasper à l'aide de la fonction JasperExportManager.exportReportToHtmlFile

    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
    package ExportHtml;
     
    import net.sf.jasperreports.engine.JasperExportManager;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    //import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import com.mysql.jdbc.Connection;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JRException;
     
     
     
    public class html {
     
    	public static void main(String[] args) throws JRException, SQLException, IOException {
     
    		String url = "jdbc:mysql://ip/database";
            String login = "toto";
            String password = "toto";
            String fichier ="//root//Desktop//report//liste_report.txt";  // - Le chemin du fichier à lire
    		File file = new File("//root//Desktop//report");  // - Le chemin du répertoire des fichiers Jasper
     
            Driver monDriver = new org.gjt.mm.mysql.Driver();
            DriverManager.registerDriver(monDriver);
            Connection connexion = (Connection) DriverManager.getConnection(url, login, password);
     
    		InputStream ips=new FileInputStream(fichier); 
    		InputStreamReader ipsr=new InputStreamReader(ips);
    		BufferedReader br=new BufferedReader(ipsr);
    		String ligne;
    		while ((ligne=br.readLine())!=null){
    			System.out.println(ligne);
    			// - Recuperation du fichier jasper
    			JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(new File(file, ligne+".jasper")),null,connexion);
     
    			// - Création du rapport au format HTML (chemin complet)
    			JasperExportManager.exportReportToHtmlFile(jasperPrint, "//var//www//baw_report//"+ligne+".html");
    		}
    		br.close(); 
     
     
    	}
     
    }

    Jusque la pas de problème ça fonctionne. Sauf que maintenant j'ai un fichier .jasper qui fonctionne avec un scriptlet, c'est à dire avec une fonction java que j'ai crée sous iReport et qui est contenue dans un fichier .class

    Lorsque mon programme ExportHtml tente de générer le fichier à partir du fichier .jasper avec le scriptlet j'obtiens cette erreur :

    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
    Exception in thread "main" net.sf.jasperreports.engine.JRException: Error loading scriptlet class : Switch_avec_dates2Scriptlet
    	at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlet(JRFillDataset.java:459)
    	at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:572)
    	at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1211)
    	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:842)
    	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:791)
    	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
    	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
    	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363)
    	at ExportHtml.html.main(html.java:43)
    Caused by: java.lang.ClassNotFoundException: Switch_avec_dates2Scriptlet
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:179)
    	at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:119)
    	at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlet(JRFillDataset.java:454)
    	... 8 more
    Il ne trouve donc pas ma fonction contenue dans mon .class. J'ai essayé d'ajouter le chemin vers le .class dans la variable d'environnement CLASSPATH, mais j'ai toujours la même erreur.

    Connaîtriez-vous un moyen de lui indiquer le chemin de mon fichier .class??

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Peux-tu nous montrer comment tu indiques ton classpath, et la commande que tu lances ?

    Petite remarque : dans le classpath, tu indiques le répertoire ou jar qui contient le .class, et surtout pas le fichier lui-même. Et si ta classe est dans un package, ce qui devrait toujours être le cas, c'est bien le répertoire qui contient le package racine.

  3. #3
    Membre du Club

    Inscrit en
    Décembre 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 100
    Points : 43
    Points
    43
    Par défaut
    Alors, pour ajouter le classpath j'utilise la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export CLASSPATH=/root/Desktop/report/
    alors, effectivement, mon fichier .class n'est pas dans un package car il a été généré à partir d'iReport. Mais mon fichier .class se trouve bien à l'adresse /root/Desktop/report

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Essaie de lancer java avec l'argument -cp /root/Desktop/report/

  5. #5
    Membre du Club

    Inscrit en
    Décembre 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 100
    Points : 43
    Points
    43
    Par défaut
    Merci de ton aide

    Par contre, ça me fait exactement la même erreur que précédemment.

  6. #6
    Membre du Club

    Inscrit en
    Décembre 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 100
    Points : 43
    Points
    43
    Par défaut
    Personne n'a une petite idée?

  7. #7
    Membre du Club

    Inscrit en
    Décembre 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 100
    Points : 43
    Points
    43
    Par défaut
    Hello, alors bonne nouvelle, le problème est résolus, en fait il ne faut pas indiquer le CLASSPATH sur l'environnement sur lequel le programme java est exécuté mais lors de la création de celui-ci, il suffit de rajouter les librairies nécessaire.

    Pour plus de détail ici

    En tout cas merci beaucoup pour votre aide !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer données de fichier texte sous MATLAB
    Par Amaury63 dans le forum MATLAB
    Réponses: 14
    Dernier message: 18/05/2010, 15h14
  2. Importer une bibliothèque de classes sous forme d'un DLL
    Par Sangdrax1604 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/12/2007, 12h18
  3. problème avec importation d'un fichier.class
    Par M.a.n.u. dans le forum NetBeans
    Réponses: 4
    Dernier message: 10/10/2007, 09h23
  4. Importer un gros fichier SQL sous windows
    Par bigsister dans le forum Outils
    Réponses: 2
    Dernier message: 24/08/2007, 15h17
  5. Import d'un fichier excel sous oracle avec TOAD 8.6
    Par lightzeus dans le forum Toad
    Réponses: 1
    Dernier message: 29/06/2007, 13h16

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