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 :

GeneratePDF: NoClassDefFoundError exception


Sujet :

Jasper

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Points : 178
    Points
    178
    Par défaut GeneratePDF: NoClassDefFoundError exception
    Bonjour!

    Moi aussi j'ai passé le pas et je me suis lancée dans la génération de rapport Jasper vers PDF. J'ai suivi le tuto http://ericreboisson.developpez.com/...er-report/pdf/
    que je conseille vivement à tous.

    La seule différence est que je dois atteindre une base de données DB2 sur une machine AS400.

    J'ai donc crée un rapport en utilisant un lien JDBC vers iSeries. Je l'ai testé et tout est OK.

    Ensuite, j'ai crée ma classe JAVA et au moment de l'éxecution, je reçois l'exception suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NoClassDefFoundError: javax/xml/parsers/ParserConfigurationException
    	at GeneratePDF.main(GeneratePDF.java:37)
    J'ai l'impression que l'erreur se trouve dans la méthode Load.
    Que me manque-t-il à votre avis? Voici la source de ma classe:

    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
    61
    62
    63
    import java.sql.Connection;
    import java.sql.Driver;
    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;
     
    public class GeneratePDF {
     
        public static void main(String[] args) {
     
            // - Paramètres de connexion à la base de données
            String url = "jdbc:as400://myMachine";
            String login = "xxxxxx";
            String password = "yyyyy";
            Connection connection = null;
     
            try {
                // - Connexion à la base
    	Driver monDriver = new com.ibm.as400.access.AS400JDBCDriver();
                DriverManager.registerDriver(monDriver);
                connection = DriverManager.getConnection(url, login, password);
    			System.out.println("Connection is OK");
     
                // - Chargement et compilation du rapport
                JasperDesign jasperDesign = JRXmlLoader.load("C:\\Program Files\\JasperSoft\\iReport-2.0.4\\TEST1.jrxml");
    	JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
     
                // - Paramètres à envoyer au rapport
                Map parameters = new HashMap();
                parameters.put("Titre", "All customers");
     
                // - Execution du rapport
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
     
                // - Création du rapport au format PDF
                JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Program Files\\JasperSoft\\iReport-2.0.4\\classic.pdf");
            } catch (JRException e) {
     
                e.printStackTrace();
            } catch (SQLException e) {
     
                e.printStackTrace();
            } finally {
                try {
                     connection.close();
                    } catch (SQLException e) {
     
                            e.printStackTrace();
                    }
            }
     
        }
    }
    D'avance merci

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Points : 178
    Points
    178
    Par défaut CompileReport ne fonctionne pas
    En ajoutant xml_apis.jar et xercesImpl.jar dans ma liste de bibliothèque, la methode Load fonctionne.

    Maintenant ça coince au niveau de la compilation...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    Voilà l'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
    java.io.IOException: CreateProcess: javac -classpath C:\TESTJASPER\TestReport;C:\TESTJASPER\TestReport\lib\commons-beanutils-1.7.jar;C:\TESTJASPER\TestReport\lib\commons-collections-2.1.jar;C:\TESTJASPER\TestReport\lib\commons-digester-1.7.jar;C:\TESTJASPER\TestReport\lib\commons-logging-1.0.2.jar;C:\TESTJASPER\TestReport\lib\commons-logging-api-1.0.2.jar;C:\TESTJASPER\TestReport\lib\itext-1.3.1.jar;C:\TESTJASPER\TestReport\lib\jasperreports-2.0.4.jar;C:\TESTJASPER\TestReport\lib\jt400.jar;C:\TESTJASPER\TestReport\lib\xercesImpl.jar;C:\TESTJASPER\TestReport\lib\xml-apis.jar C:\TESTJASPER\TestReport\classic_1205241430523_719205.java error=2
    	at java.lang.Win32Process.create(Native Method)
    	at java.lang.Win32Process.<init>(Win32Process.java:87)
    	at java.lang.Runtime.execInternal(Native Method)
    	at java.lang.Runtime.exec(Runtime.java:582)
    JRException
    	at java.lang.Runtime.exec(Runtime.java:505)
    	at java.lang.Runtime.exec(Runtime.java:471)
    	at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:62)
    	at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:67)
    	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:190)
    	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:220)
    	at GeneratePDF.main(GeneratePDF.java:41)
     
    Nested by:
    net.sf.jasperreports.engine.JRException: Error compiling report java source files : C:\TESTJASPER\TestReport\classic_1205241430523_719205.java 
    	at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:93)
    	at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:67)
    	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:190)
    	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:220)
    	at GeneratePDF.main(GeneratePDF.java:41)
    D'avance merci

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Points : 178
    Points
    178
    Par défaut Compile report plante toujours
    Après quelques recherches dans Google, j'ai ajouté dans la liste de bibliothèque jdt-compiler-3.1..jar.

    Et de nouveau, problème à l'exécution
    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
    java.lang.NoSuchFieldError: org.eclipse.jdt.internal.compiler.ast.TypeReference: field VoidBinding not found
    	at org.eclipse.jdt.internal.compiler.ast.TypeReference.baseTypeReference(TypeReference.java:40)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.getTypeReference(Parser.java:7863)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeMethodHeaderName(Parser.java:3893)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:4805)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8491)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8656)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8621)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7420)
    	at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:289)
    	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315)
    	at net.sf.jasperreports.engine.design.JRJdtCompiler.compileUnits(JRJdtCompiler.java:192)
    	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:190)
    	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:220)
    	at GeneratePDF.main(GeneratePDF.java:41)
    java.lang.NoSuchFieldError: org.eclipse.jdt.internal.compiler.ast.TypeReference: field VoidBinding not found
    	at org.eclipse.jdt.internal.compiler.ast.TypeReference.baseTypeReference(TypeReference.java:40)Connection is closed
     
    	at org.eclipse.jdt.internal.compiler.parser.Parser.getTypeReference(Parser.java:7863)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeMethodHeaderName(Parser.java:3893)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:4805)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8491)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8656)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8621)
    	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7420)
    	at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:289)
    	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315)
    	at net.sf.jasperreports.engine.design.JRJdtCompiler.compileUnits(JRJdtCompiler.java:192)
    	at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:190)
    	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:220)
    	at GeneratePDF.main(GeneratePDF.java:41)
    Exception in thread "main"
    Et en effet, pas de méthode VoidBinding dans org.eclipse.jdt.internal.compiler.parser.Parser

    Avez-vous déjà rencontré ce problème? Que manque-t-il? Y-t-il des choses en trop?

    Merci de votre aide!!

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Points : 178
    Points
    178
    Par défaut
    La solution était toute bête, mais fallait y penser.

    Il faut vérifier la version du compilateur java! Même si on pense avoir un JDK 1.4.2 (ce qui était mon cas), ce n'est peut-être pas celui utilisé.

    La solution est donc d'installer un nouveau jre qui pointe bien vers la version qu'il faut. (Préférences - java - installed jre's - Add)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 02/02/2009, 01h54
  2. Soucis avec NoClassDefFoundError exception
    Par Triomen dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 14/01/2009, 16h00
  3. Réponses: 3
    Dernier message: 19/02/2007, 17h14
  4. JavaMail exception NoClassDefFoundError
    Par filot dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 16/02/2007, 18h57
  5. [Debutant]Exception NoClassDefFoundError dans main
    Par Mystnux dans le forum Langage
    Réponses: 4
    Dernier message: 17/06/2006, 13h24

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