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 :

NullPointeurException avec JXL


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut NullPointeurException avec JXL
    Bonjour,

    j'ai un petit pointeur null que j'arrive pas à gérer, tout les élément donné à la fonction importSheet ne sont pas null.
    Si quelqu'un à une petite idée je suis preneur

    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
     
    try {
    				sortie=Workbook.createWorkbook(new File(this.nomFichierSynthese),prestataireCmi);
    			} catch (IOException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
     
    prestataireCmi = Workbook.getWorkbook(new File(this.nomFichierCMI));
     
    		Sheet[] sTemp = prestataireCmi.getSheets();
     
    		for(int i=0;i<sTemp.length;i++){
    			System.out.println("le nom de la feuille est " + sTemp[i].getName()+i );	
    		}
     
    //pointeur null sur importSheet
    		WritableSheet sheetCopier = sortie.importSheet("Synthèse CMI", 7 , sTemp[1]);

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 100
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    Essaye de remplacer par

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Quelle est la stacktrace?
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    le problème ne vient pas de la

    Si tu veux qu'on évite le tableau de Sheet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WritableSheet sheetCopier = sortie.importSheet("Synthèse CMI", 7 , prestataireCmi.getSheet(1));

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Voila la stacktrace:


    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
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at jxl.write.biff.SheetCopier.deepCopyCells(SheetCopier.java:996)
    	at jxl.write.biff.SheetCopier.importSheet(SheetCopier.java:542)
    	at jxl.write.biff.WritableSheetImpl.importSheet(WritableSheetImpl.java:2699)
    	at jxl.write.biff.WritableWorkbookImpl.importSheet(WritableWorkbookImpl.java:1897)
    	at paquet.CumulParGroupe.enregistrerSynthese(CumulParGroupe.java:329)
    	at paquet.CumulParGroupe.<init>(CumulParGroupe.java:70)
    	at paquet.SyntheseGFA.<init>(SyntheseGFA.java:375)
    	at paquet.SyntheseCautionsLegales.<init>(SyntheseCautionsLegales.java:74)
    	at paquet.PortefeuilleCautionsLegales.<init>(PortefeuilleCautionsLegales.java:370)
    	at paquet.CautionDeMarche.<init>(CautionDeMarche.java:379)
    	at paquet.BrowserSyntheseGeneral.actionPerformed(BrowserSyntheseGeneral.java:107)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)


    at paquet.CumulParGroupe.enregistrerSynthese(CumulParGroupe.java:329)

    correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WritableSheet sheetCopier = sortie.importSheet("Synthèse CMI", 7 , prestataireCmi.getSheet(1));

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Aucune idée?

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Premier truc : vérifier la validité des paramètres.

    Un truc con que je fais des fois, je télécharge le code source de la version de la librairie utilisée. Ou alors je décompile le code Java.
    Ensuite je regarde rapidement ce qui se passe à la ligne indiquée.
    Enfin je lance le programme en debug et je déroule le code jusqu'à ce que ca pète.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Mes paramètres sont tous valide (testé un par un).
    Si vous avez un lien pour avoir les sources de JXL je veux bien, je ne trouve que des fichiers java avec les prototypes des fonctions.

  9. #9
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    T'as essayé de regarder dans l'archive (zip ou tar.gz) de JXL ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Oui!Justement je trouve que les Headers des fonctions de l'API

  11. #11
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Quel version de JXL utilises-tu ? Essayes la dernière (2.6.12)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    J'utilise bien la dernière version en l’occurrence la 2.6.12 récupéré ici :
    http://sourceforge.net/projects/jexc...celapi/2.6.12/

  13. #13
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Alors retelecharges l'archive car chez moi j'ai bien toutes les sources !
    Et la ligne indiquée par la StackTrace ne devrait pas causer de NullPointerException.

    Tu ne lancerais pas deux traitements en parallèle ?
    As-tu essayé de faire un programme simple qui reproduit le problème ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Voila un programme simple qui fait la même chose :

    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
    package paquet;
     
    import java.io.File;
    import java.io.IOException;
     
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    import jxl.write.WritableWorkbook;
     
    public class ImportShaa {
    	private Workbook prestataire,global;
    	private WritableWorkbook sortie;
    	private  String sortieSyntheseGeneral = "D:/Documents/Synthese general.xls";
    	private  String nomFichierGlobal = "D:/Documents/PERIMETRE_GLOBAL.xls";
    	private  String nomFichierCmi = "D:/Documents/SyntheseCMI.xls";
     
    	public ImportShaa() throws BiffException, IOException {
     
    		global = Workbook.getWorkbook(new File(nomFichierGlobal));
    		prestataire = Workbook.getWorkbook(new File(nomFichierCmi));
    		sortie = Workbook.createWorkbook(new File(sortieSyntheseGeneral),global);
    System.out.println(prestataire.getSheet(1).getName());
    		sortie.importSheet("tot", 7, prestataire.getSheet(1));
     
    		sortie.write();
     
    	}
    	public static void main(String args[]) {
    		try {
    			ImportShaa a = new ImportShaa();
    		} catch (BiffException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    La stack correspondante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Warning:  Line Object on sheet "Paramètres" not supported - omitting
    Synthèse CMI
    Exception in thread "main" java.lang.NullPointerException
    	at jxl.write.biff.SheetCopier.deepCopyCells(SheetCopier.java:996)
    	at jxl.write.biff.SheetCopier.importSheet(SheetCopier.java:542)
    	at jxl.write.biff.WritableSheetImpl.importSheet(WritableSheetImpl.java:2699)
    	at jxl.write.biff.WritableWorkbookImpl.importSheet(WritableWorkbookImpl.java:1897)
    	at paquet.ImportShaa.<init>(ImportShaa.java:23)
    	at paquet.ImportShaa.main(ImportShaa.java:30)
    at paquet.ImportShaa.<init>(ImportShaa.java:23) correspond à :
    sortie.importSheet("tot", 7, prestataire.getSheet(1));

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    A mon avis tu dois avoir dans ta config un melting pot de versions quelque part, parce que le code que pointe ton stacktrace est le suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
              if (c != null)
              {
                toSheet.addCell(c);
    
                // Cell.setCellFeatures short circuits when the cell is copied,
                // so make sure the copy logic handles the validated cells
                if (c.getCellFeatures() != null &
                    c.getCellFeatures().hasDataValidation())
    Pour avoir un nullpointerexception là, il faudrait que c ou c.getCellFeatures() soit à null. Hors comme tu peux le voir, ces deux cas ont été testés. Et comme ta démo ne fait pas de multithread, ce n'est pas un changement dans un autre thread qui ferait changer la logique.


    Edit: je corrige mes dire précédent, tu viens de mettre un doigt sur un joli bug de jxl, tu va pouvoir faire un bug report.
    Ce test est erroné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                if (c.getCellFeatures() != null &
                    c.getCellFeatures().hasDataValidation())
    Il aurait fallu écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                if (c.getCellFeatures() != null &&
                    c.getCellFeatures().hasDataValidation())
    dans ton cas, je suppose que c.getCellFeatures() est null. Or le simple "&" test les deux coté de l'opérandes, contrairement à && qui s'arrête si le premier vaux false :p

  16. #16
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Bien vu ! Ca me parait tellement évident de toujours mettre "&&" que j'ai même pas tilter

    Vive Checkstyle et Findbugs (ou Sonar de manière générale) qui auraient tout de suite tiltés !
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  17. #17
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Je suis pas si nul en Java alors
    Comment faire le bug report?
    Comme solution je doit récupérer les sources et changer sa à la main je suppose?

  18. #18
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Visiblement, ils n'ont pas mis de lien vers le "bug tracker".
    Tu peux donc utiliser cette page.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  19. #19
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Envoyé,
    Le post est en cour de validation.
    Je vous tiens en courant en tout cas merci pour vos réponse

  20. #20
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48

Discussions similaires

  1. Problème de lecture avec JXL API
    Par Mistika3129 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/07/2012, 17h24
  2. trier un fichier excel avec Jxls
    Par fahmi87 dans le forum Documents
    Réponses: 0
    Dernier message: 08/04/2011, 22h51
  3. [JXL] erreur avec JXL
    Par yoxx dans le forum Documents
    Réponses: 9
    Dernier message: 11/12/2007, 13h44
  4. Réponses: 6
    Dernier message: 20/02/2007, 10h42
  5. [JTable] NullPointeurException avec prepareRenderer
    Par Le Nain dans le forum Composants
    Réponses: 2
    Dernier message: 06/09/2006, 18h06

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