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

avec Java Discussion :

java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook alors qu'il y a toute les librair


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook alors qu'il y a toute les librair
    Bonjour,

    J'ai besoin de travailler sur des fichiers Excel en xlsx , j'ai trouvé ce code qui permet de convertir un xlsx en csv.

    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
    public static void xlsx(File Fichier_Entree, File Fichier_Sortie) {
    	
            /* Pour stocker les données dans le fichier CSV*/
            StringBuffer donnee = new StringBuffer();
    
            try {
                FileOutputStream fos = new FileOutputStream(Fichier_Sortie);
                /* Obtenir l'objet du classeur du fichier XLSX */
    			System.out.println("Probleme ici");
                XSSFWorkbook wBook = new XSSFWorkbook(new FileInputStream(Fichier_Entree));
                /* Obtiens la première page du classeur*/
                XSSFSheet sheet = wBook.getSheetAt(0);
                Row row;
                Cell cell;
                /* Itérer à travers chaque rangées de la première feuille */
                Iterator<Row> rowIterator = sheet.iterator();
    
                while (rowIterator.hasNext()) {
                    row = rowIterator.next();
    
                    /* Pour chaque ligne, itérer sur chaque colonne */
                    Iterator<Cell> cellIterator = row.cellIterator();
                    while (cellIterator.hasNext()) {
    
                        cell = cellIterator.next();
    
                        switch (cell.getCellType()) {
                            case Cell.CELL_TYPE_BOOLEAN:
                                donnee.append(cell.getBooleanCellValue() + ",");
    
                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                                donnee.append(cell.getNumericCellValue() + ",");
    
                                break;
                            case Cell.CELL_TYPE_STRING:
                                donnee.append(cell.getStringCellValue() + ",");
                                break;
    
                            case Cell.CELL_TYPE_BLANK:
                                donnee.append("" + ",");
                                break;
                            default:
                                donnee.append(cell + ",");
    
                        }
    					/*Retour à la ligne SI BUG AFFICHAGE VOIR OU MIEUX LE PLACER*/
    					donnee.append("\r\n");
                    }
                }
    
                fos.write(donnee.toString().getBytes());
                fos.close();
    
            } catch (Exception ioe) {
                ioe.printStackTrace();
            }
        }
    la partie en grasse est la cause du problème pourtant j'ai bien fait l'import de tous les jars nécessaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    je compile sur windows , j'utilise pas eclipse car j'aurai besoin de travailler sur différents fichier au fur et à mesure du temps et mettre les fichiers en arguments. Tous les jars de poi je les ais pris sur le site officiel avec ce lien là en binaire sans béta en 3.14 https://poi.apache.org/download.html

    J'obtiens donc un dossiers principale comme ça en regroupant les jars

    Nom : problème 1.PNG
Affichages : 1856
Taille : 41,7 Ko

    J'ai regardé divers stackoverflow , mais j'ai trouvé aucune solution .Au début j'ai juste compilé le poi classique et le poi-ooxml puis j'ai compilé tous les jars avec une grosse commande brut en rajoutant certains jars non présent dans le dossier officiel poi pour voir si c'était dû à certains jar présent dans des anciennes versions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -cp poi-3.14-20160307.jar;poi-ooxml-3.14-20160307.jar;xmlbeans-2.6.0.jar;curvesapi-1.03.jar;poi-ooxml-schemas-3.14-20160307.jar;poi-3.7-jdk1.4-20110508-rc2.jar;poi-scratchpad-3.14-20160307.jar;poi-excelant-3.14-20160307.jar;log4j-1.2.17.jar;junit-4.12.jar;commons-logging-1.2.jar;commons-codec-1.10.jar;dom4j-1.6.1.jar PKI.java
    la compilation se passe bien et j'ai toujours l'erreur lors de l'éxécution
    Nom : probleme2.PNG
Affichages : 1809
Taille : 17,3 Ko


    Voici le main ou c'est vraiment le début du code donc à pas prendre en compte le reste :
    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
    	public static void main (String[] args) {
    		try{
    			if (args.length > 0){
    				File F = new File(args[0]);
    				/*Récupérer le nom du fichier*/
    				String Nom_Fichier = F.getName();
    				/*Récupérer l'extension du fichier*/
    				String Extension_Fichier = Nom_Fichier.substring(Nom_Fichier.lastIndexOf("."));
    				/*Récupérer le nom du fichier sans extension*/
    				String NomCourt_Fichier = Nom_Fichier.substring(0,Nom_Fichier.lastIndexOf("."));
    				System.out.println (Extension_Fichier);
     
    				if (Extension_Fichier.equals(".xlsx")){
    					File Fichier_Sortie = new File(NomCourt_Fichier+".csv");
    					xlsx(F, Fichier_Sortie);
    					F = Fichier_Sortie;
    					System.out.println ("Dans le IF");
    					System.out.println (F.getName());
    				}
    				else{
    					/*
    					List<String> res = readFile(f);
    					for(String element: res){
    					 System.out.println (element);
    					}*/
    					System.out.println ("Dans le ELSE");
    				}
    			}
    			else{
    				System.out.println ("Erreur : Veuillez indiquer au moins plusieurs argument");
    				System.exit(1);
    			}
    		}catch (Exception e) {
    			System.out.println ("Ce fichier n'existe pas");
    		}	
        }
    Quand j'utilise pas la fonction et que je test juste l'import aucun soucis donc je comprends pas pourquoi il trouve pas le XSSWorkbook

    Merci de votre attention

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Tu specifie le classpath (-cp) lors de la compilation certes. Mais pas lors du run avec la commande java, donc il ne trouve pas la lib.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Donc si je comprends bien je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -cp poi-3.14-20160307.jar;poi-ooxml-3.14-20160307.jar;xmlbeans-2.6.0.jar PKI.java
    Pour la compilation

    Et l'éxécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp poi-3.14-20160307.jar;poi-ooxml-3.14-20160307.jar;xmlbeans-2.6.0.jar PKI
    Il m'indique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : impossible de trouver ou charger la classe principale PKI
    Ça se passe comment pour l’exécution du coup ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il faut inclure dans le classpath la classe que tu exécutes (ou plus généralement les classes que tu as faites en plus des jars que tu utilises). Comme ta classe est dans le dossier où tu lances l'exécution, tu peux indiquer ce classpath par . (un point, qui représente le dossier courant).

    java truc et java -cp . truc sont équivalents. Quand on indique pas de classpath, c'est automatiquement le dossier courant. Mais dès que tu utilises -cp, . n'est plus inclus par défaut et il faut l'indiquer explicitement. Ensuite, il est possible d'indiquer l'ensemble des jars d'un dossier par le caractère *.

    Donc la commande d'exécution pour toi sera java .;* PKI. Si tu veux indiquer explicitement indiquer chaque jar, il faudra tape java -cp .;poi-3.14-20160307.jar;poi-ooxml-3.14-20160307.jar;xmlbeans-2.6.0.jar PKI.

    A noter que sous linux, il faudra utiliser : au lieu de ;.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/08/2012, 20h37
  2. Réponses: 6
    Dernier message: 25/01/2010, 01h58
  3. Réponses: 4
    Dernier message: 21/02/2007, 12h13
  4. Réponses: 2
    Dernier message: 17/08/2006, 08h26
  5. [DisplayTag] java.lang.NoClassDefFoundError: org/apache/commons/lang/UnhandledException
    Par MAJIK_ENIS dans le forum Taglibs
    Réponses: 18
    Dernier message: 06/04/2006, 10h18

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