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

Eclipse Java Discussion :

Projet qui marche sous Eclipse ne marche plus en JAR


Sujet :

Eclipse Java

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut Projet qui marche sous Eclipse ne marche plus en JAR
    Salut tout le monde.

    Je rencontre un petit problème plutôt chagrinant. J'ai un projet qui marche super bien sous Eclipse, et dans lequel je peux ouvrir différents fichiers.
    Quand j'ouvre un fichier Excel, je le transforme en flux XML pour pouvoir faire un traitement standard avec mon parseur SAX.

    Le problème c'est que l'implentation de POI pour analyser mes fichiers Excel marche à merveille sous Eclipse, mais ne marche plus du tout dès que j'exporte le projet en JAR...
    Voici un bout de mon code, si quelqu'un y voit une anomalie, ou si quelqu'un à une idée en rapport avec les accès aux librairies...
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    package com.maSociete.MonSoft.io;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
     
    import javax.swing.JOptionPane;
     
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
     
    import com.maSociete.monSoft.monSoftProgram;
    import com.maSociete.monSoft.Util;
     
    /**
     * @author leminipouce
     *
     *      The goal of this class is to parse Excel file, in order to have them readable 
     * in monSoft.
     * 
     * The way this class is implemented is to parse the XLS file and build equivalent
     * XML stream, respecting the XML format defined for monSoft.
     */
    public final class MonSoftXLSToXML
    {
     
    	/**
             * display the stream
             */
    	public static boolean display(String stream) {
    		String options[] = new String[] {"Agree", "Exit"};
     
    		int chosen = JOptionPane.showOptionDialog(null, 
    				stream,
    				"", 
    				JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
    				null, options, options[0]);
    		switch(chosen) {
    			case 0:
    				return true;
    			case JOptionPane.CLOSED_OPTION:
    				return false;				
    		}
    		return false;
    	}
     
    	/** 
             * Builds a String, containing the XML stream corresponding to the XLS file given 
             * in param.
             * This XML stream is well formatted, respecting the Dashbaord DTD.
             */
    	public static String buildXmlFromXls(File xlsFile){
    		String xmlStream=null;
    		StringBuffer buildingXmlStream=new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tree>\n");
     
    		POIFSFileSystem fs=null;		//Neccessary to open the Excel file
    		HSSFWorkbook workBook=null;	//Reference to the Excel workbook
    		HSSFSheet mapDataSheet=null;	//Reference to the primary Sheet, containing the data set
     
    		if(display("Coucou 1")){};
     
    		try{
    			if(display("xlsFile "+xlsFile.getName()+" path "+xlsFile.getPath())){};
    			if(display("FIS "+new FileInputStream(xlsFile).toString())){};
    			fs = new POIFSFileSystem(new FileInputStream(xlsFile));
    			if(display("FS "+fs.toString())){};
    		}catch (FileNotFoundException e){
    			if(display("FNFException ")){};
    			e.printStackTrace();
    			return null;
    		}catch (IOException e){
    			if(display("IOException ")){};
    			e.printStackTrace();
    			return null;
    		}catch(Exception e){
    			if(display("Exception ")){};
    			e.printStackTrace();
    			return null;
    		}
     
    		if(display("FS récupéré ")){};
    La méthode display est un bout de code récupéré pour afficher un string sous forme de "pop-up".
    J'affiche sans problème le "Coucou 1", le xlsFile.getName() ainsi que la référence du FileInputStream, par contre, je ne fais aucun autre affichage => je ne dépasse pas la tentative d'instanciation de mon object POIFSFileSystem fs, mais je ne lève pas non plus d'exception !
    A priori il n'y a pas de problème vis à vis des accès à POI puisque je passe sans problème le stade du la création de la référence à l'objet
    POIFSFileSystem fs=null;


    Dans le jar que j'exporte, il y a toutes mes librairies (j'utilise aussi, entre autres JDOM, et qui marche à merveille si je ne tente pas d'ouvrir d'XLS.)
    Pour être sûr que le problème ne vient pas d'une résolution d'adresse interne au jar POI, je l'ai décompressé, et ses packages se trouvent au même endroit que les miens... J'avoues ne plus y comprendre grand chose.

    Par avance, Merci pour votre aide.

  2. #2
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    juste une petite question : est ce que la version de la jre que tu utilises est la meme entre eclipse et celle que tu utilises pour executer le .jar ?

  3. #3
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Oui (enfin, normalement !)

    Sous Eclipse j'utilise la JRE 1.5.0_04 et java -version me dit que j'utilise la 1.5.0-b64.
    Je suppose que c'est la même puisque c'est la seule version 5 que j'ai installé.

    Est-il possible de forcer l'utilisation d'une JRE particulière quand on crée un JAR ? (de mémoire j'ai déjà passer un post là dessus, je vais jeter un oeil)

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    As tu indiqué dans ton manifest que tu utilisais une API ?...

    sinon fais une recherche, de nombreux sujets en parlent.

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Problème trouvé !!! C'est exactement ça. Je pensais pas avoir ce problème vu que j'utilise d'autres librairies et que je n'ai jamais eu le moindre problème avec elles... Bizarre autant qu'étrange.

    Voici donc le sujet (tiens il est de toi ) que j'ai trouvé pour répondre à ma question, et voici mon nouveau manifest.mf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: com.maSociete.monSoft.MonSoftProgram
    Class-Path: lib/ant.jar lib/jdom.jar lib/junit.jar lib/poi-2.5.1-final-20040804.jar
    Maintenant il reste quand même un problème (je suis en train de chercher la solution et je la poste dès que je la trouve... si je la trouve !)
    Comment faire pour ne pas être obliger d'avoir le répertoire lib dans le même répertoire que mon .jar ? Car dans mon .jar j'ai inclu mes images (icônes...) et mes librairies, mais si ces 2 "choses" ne sont pas accessibles directement au même niveau que mon .jar, alors ça ne marche pas !

  6. #6
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Victoire éphémère...

    Je viens de recréer le .jar avec Eclipse, et il n'y a rien à faire, il ne veut plus utiliser mon manifest tel quel. Systématiquement il enlève la partie classpath...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    Dans Eclipse, il faut cocher la case "sauver le manifest" pour qu'il puisse être réutilisé.

    En ce qui concerne l'intégration du lib/ dans le jar, je crois que ça n'est pas possible. Il faut effectivement que le manifest indique le classpath et que ce qu'il y a dans ce classpath soit en dehors du jar...

  8. #8
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Victoire totale...

    J'utilise le plugin Fat jar pour créer mon jar, et ça marche sans problème.
    Mes jars de librairie sont inclut dans mon jar final, et la résolution d'adresse se fait correctement.
    Seul problème restant, éussir à mettre mes ressources (icônes, images...) dans le jar, et lui faire comprendre quelles y sont. Mais ça, c'est un autre problème.

    Merci beaucoup pour votre aide.

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

Discussions similaires

  1. Thread qui fonctionne sous eclipse mais pas depuis un jar ?
    Par POKOU dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 01/07/2014, 16h56
  2. La compilation automatique sous Eclipse ne marche plus
    Par specsy dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 14/09/2008, 14h01
  3. Réponses: 6
    Dernier message: 07/09/2008, 17h31
  4. [SQL] Requête sql qui plante sous firefox et marche sous IE
    Par PlayKat dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/10/2007, 16h17
  5. [Applet]Marche sous Eclipse mais pas sous un Browser
    Par leminipouce dans le forum Applets
    Réponses: 2
    Dernier message: 29/05/2006, 18h38

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