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

API standards et tierces Java Discussion :

problème création rapport excel avec apache poi


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut problème création rapport excel avec apache poi
    Bonjour,

    J'ai une application web tournant sur un serveur tomcat 5.5/Red hat 4 permettant de créer des rapports excels à la demande tout marchait bien jusqu'au jour au cette erreur que je n'arrive pas à comprendre est apparu :

    java.lang.NoClassDefFoundError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Unknown Source)
    at sun.font.FontManager.initSGEnv(Unknown Source)
    at sun.font.FontManager.findFont2D(Unknown Source)
    at java.awt.Font.getFont2D(Unknown Source)
    at java.awt.Font.canDisplay(Unknown Source)
    at java.awt.Font.canDisplayUpTo(Unknown Source)
    at java.awt.font.TextLayout.singleFont(Unknown Source)
    at java.awt.font.TextLayout.<init>(Unknown Source)
    at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1700)
    at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1661)
    at app.dwr.classes.GererRapport.getExcel(GererRapport.java:333)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
    at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    Merci d'avance à toutes les personnes qui pourront me faire comprendre cette erreur
    Bonne journée à tous

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Il ne trouve pas une classe. Un jar effacé ou mit à jour ? Une classe supprimée d'un package ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Mon problème était du à un problème de display sous UNIX.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut problème d'utilisation de POI/HSSF sous UNIX
    Bonjour

    J'ai un problème relativement proche sur une machine UNIX (OS : "CentOS 5.3" ; Tomcat : 4.1 ; JDK : 1.4.2). La même version du programme fonctionne sous Windows et sous une RedHat 2.1AS).

    Initialement, j'avais un premier message d'erreur indiquant une librairie dynamique manquante sur le système :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
    Cela a pu être résolu en ajoutant la librairie manquante ("libXp.so").

    Une fois cette correction réalisée, un second message d'erreur est apparu , très proche de celui auquel tu as été confronté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.NoClassDefFoundError
    at java.awt.font.TextLayout.singleFont(TextLayout.java:544)
    at java.awt.font.TextLayout.<init>(TextLayout.java:606)
    at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn (HSSFSheet.java:1748)
    at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn (HSSFSheet.java:1709)
    Comment as-tu pu résoudre concrètement Ce problème ?
    Merci.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    je pense que ma solution ne va pas régler ton problème mais bon je me trompe peut-être.

    au lancement de la jvm j'ai rajouter l'option -Djava.headless = true

    bonne journée

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse.

    Oui, c'est bien ce que recommande la fondation Apache (qui édite l'API POI utilisée pour générer les fichiers Excel) dans sa documentation.

    Il existe plusieurs façons de procéder :
    1. via les arguments passé à l'exécutable "java" de la JVM (comme ce que tu as fait),
    2. via du code (voir ci-dessous),
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       
            // ATTENTION : sous Unix, l'appel à "autoSizeColumn()" lance
            // un appel système au serveur X (gestionnaire graphique d'Unix)
            // si ce serveur n'est pas installé sur la machine Unix, une
            // exception se produira !!
            // Pour résoudre ce problème il faut ajouter la ligne de code ci-dessous.
            System.setProperty("java.awt.headless", "true");
    3. il doit enfin être possible de renseigner la valeur de la variable dans un fichier ".properties" qui sera lu par la JVM (je ne sais plus comment on fait précisément).


    Quoi qu'il en soit, dans mon cas, la propriété système java.awt.headless est correctement initialisée. Le problème a donc une autre origine... Pour l'instant, je n'ai pas vraiment de piste.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 62
    Points
    62
    Par défaut
    Quel est ton message d'erreur en intégrale? et si tu veux poste un peu de code à l'endroit du soucis

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut problème résolu !
    En fait, le seul problème était lié à la librairie dynamique ".so" manquante. Après l'avoir mise en place, j'avais une autre erreur, que je ne comprenais pas.

    Mais j'ai fait ce matin un arrêt/relance du serveur Tomcat et cela a fait disparaître la nouvelle erreur....

    Je pense que Tomcat doit initialiser à son démarrage quelque chose de relatif aux librairies dynamiques UNIX, sans le mettre à jour par la suite : voilà vraisemblablement pourquoi un arrêt/relance résoud le problème...

    Par conséquent, le seul problème était lié à un ".so" manquant.

    En tout cas, merci d'avoir passé un peu de temps sur mon problème.

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

Discussions similaires

  1. Création de fichiers .XLSX avec Apache POI
    Par Geoffrey49000 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 22/07/2011, 16h55
  2. [c#, VS2005]problème création rapport
    Par Filippo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/05/2007, 17h37
  3. Problème création rapport Crystal
    Par Méthodes dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 30/01/2007, 12h06
  4. Problème création de DLL avec CString
    Par loupdeau dans le forum MFC
    Réponses: 3
    Dernier message: 21/07/2005, 20h55

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