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 :

Eclipse Fat Jar lancement par DOS


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut Eclipse Fat Jar lancement par DOS
    Bonjour,
    sous Eclipse j'exécute mon programme Java : ca fonctionne.
    Je créé ensuite un .jar
    Pour cela clique droit sur le projet et built Fat Jar.
    Je lance mon .jar par une commande dos est la c'est KO.

    Je pense que le problème doit provenir de mes versions java : j'en ai plusieurs d'installer (ert je dois les garder) : jre1.4, jre1.5 et jre 1.6

    Eclipse doit fonctionner avec l'une des versions et mon .jar doit en utiliser une autre.

    Où puis je vérifier le paramètrage de mes versions ???
    (il doit y avoir à plusieurs endroits : pour le moment j'en ai trouvé 2 dans Windows/Préférences et 2 dans click droit sur projet/Properties)

    Ou alors une autre idée ??

    Merci d'avance.
    Ritchie.

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Citation Envoyé par ritchie23 Voir le message
    Je lance mon .jar par une commande dos est la c'est KO.
    Et le KO en question c'est ... ? Veux tu détailler s'il te plaît ?

  3. #3
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Sous Eclipse, ca me génére un fichier (c'est le résultat attendu), tandis que sous dos en lançant mon .jar, je n'ai pas ce fichier.

    J'ai joint les messages de la console que j'obtiens sous Eclipse et sous dos (lancement jar).


    Donc, ca fonctionne nickel sous Eclipse mais en faisant mon .jar non.
    Pourquoi ?

    Merci.
    Ritchie.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par ritchie23 Voir le message
    Donc, ca fonctionne nickel sous Eclipse mais en faisant mon .jar non.
    Pourquoi ?
    Sans voir le code, je ne peux pas te le dire.
    Si c'était un problème de lecture, on pourrait penser que tu utilisais des File qui marchent lors du dév (projet explosé) mais pas après export en jar.

    Tu peux montrer le code qui génère le fichier en question ?

  5. #5
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    L'explication de cette classe se situe en commentaire entre les attributs et les méthodes.
    En gros, on va récupérer une pièce jointe d'un serveur de mail (j'utilise james 2.3.1 pour simuler le serveur et ma pièce jointe se situe en dur). Il va ensuite créer un fichier dans le répertoire stocké dans la base de registre.





    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    package com.thales.sat.lsr.pratic.mail.impl;
     
    import static junit.framework.Assert.assertTrue;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.SimpleDateFormat;
     
    import javax.mail.Flags;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Part;
    import javax.mail.Session;
    import javax.mail.Store;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    import com.thales.sat.lsr.pratic.common.BeanWithProperties;
    import com.thales.sat.lsr.pratic.mail.MailException;
    import com.thales.sat.lsr.pratic.mail.MailManager;
    //RPE le 2008/09/30 : sauvegarde des tickets com dans le répertoire inscrit dans la base de registre HKCU/Software/JavaSoft/Prefs, clé pathticketcom
    import java.util.prefs.Preferences; //fin RPE
     
    public class MailManagerImpl extends BeanWithProperties
    implements MailManager{
     
    	private static Log log =LogFactory.getLog(MailManagerImpl.class);
     
    	// clé de la propriété du répertoire de sortie
    	public final String PROP_OUTPUTDIR = "mail.manager.output.directory";
     
    	// valeur par defaut du répertoire de sortie
    	public final String VALUE_OUTPUTDIR = "D:/NMC/utilisateur/mesure/ticket_com";
     
    	// clé de la propriété de suppression des mails
    	public final String PROP_DELETE = "mail.manager.delete.message";
     
    	// valeur par defaut de la suppression des mails
    	public final String VALUE_DELETE = "true";
     
    	// clé de la propriété d'ecrasement des mails
    	public final String PROP_OVERWRITE = "mail.manager.overwrite.message";
     
    	// valeur par defaut d'ecrasement des mails
    	public final String VALUE_OVERWRITE = "true";
     
    	// Format des dates pour l'arborescence de sauvegarde
    	public final SimpleDateFormat DATEFORMAT = 
    		new SimpleDateFormat("yyyyMMdd_HHmmss");
     
    	// Renvoie un Id unique pour chaque mail du type : sender@domain_date
    	String getId(Message message) throws MessagingException{
    		return message.getReplyTo()[0].toString() + "_" + 
    					DATEFORMAT.format(message.getSentDate());
    	}
     
     
     
    /**
     * Méthode principale du traitement. Le processus est le suivant :<br>
     * - Connexion au serveur Mail<br>
     * - Pour chacun des répertoires <br>
     *              - Recupération des messages<br>
     *              - Sauvegarde des pieces jointes<br>
     *              - Suppression des messages<br>
     * 
     */
    	public void process() throws MailException {
    		Store store = null;
     
     
    		try{
     
    			boolean overwrite = getBooleanProperty(PROP_OVERWRITE,VALUE_OVERWRITE);
     
    			boolean delete = getBooleanProperty(PROP_DELETE,VALUE_DELETE);
     
     
    			store = session.getStore();
    			store.connect();
     
    			Folder folder = store.getDefaultFolder();
     
    			Folder[] folders = folder.list();
     
    			for(Folder f : folders){
    				log.info( "Checking Mail Folder : "  + f.getFullName());
     
    				f.open(Folder.READ_WRITE);
     
    				for(Message message : f.getMessages()){
     
    					String id = getId(message) ;
     
    					log.info( "Loading message : "  + id );
     
    					// RPE le 2008/09/30 : sauvegarde des tickets com dans le répertoire inscrit dans la base de registre HKCU/Software/JavaSoft/Prefs, clé pathticketcom
    					//String directory = getProperty(PROP_OUTPUTDIR, VALUE_OUTPUTDIR) + "/" + id;
    					Preferences p = Preferences.userRoot(); 
    					String directory = p.get("pathticketcom", "erreur d'acces") + "/" + id;
    					// fin RPE
     
    					log.debug(message.getFrom()[0].toString() + " : " + message.getSubject() + " dumped to " + directory);
     
    					File dir = new File(directory);
     
    					if( dir.exists() ){
    						log.warn("Directory already exists : " + dir.getAbsolutePath());
     
    						if( overwrite == false ){
    							continue;
    						}
    					}else{
    						assertTrue("Unable to create " + directory, dir.mkdirs());
    					}
     
    					Object content = message.getContent();
    					if (content instanceof Multipart) {
    						handleMultipart((Multipart)content,directory);
    					} else {
    						handlePart(message,directory);
    					}
     
    					message.setFlag(Flags.Flag.DELETED, delete);
     
    				}
     
    				f.close(true);
     
    			}
    		}catch(Exception e){
    			throw new MailException(e);
    		}finally{
    			if( 	store != null && 
    					store.isConnected() ){
    				try { store.close(); } catch (MessagingException e) {}
    			}
    		}
    	}
     
    	// Session mail utilisée
    	Session session;
     
    	public Session getSession() {
    		return session;
    	}
     
    	public void setSession(Session session) {
    		this.session = session;
    	}
     
     
    /**
     * Decompose chaque partie du mail et sauvegarde les fichiers joints
     * dans le repertoire <tt>dir</tt>
     * @param multipart : differentes parties du mail
     * @param dir : repertoire ou doivent etre stockes les pieces jointes
     * @throws MessagingException
     * @throws IOException
     */
    	private void handleMultipart(Multipart multipart,String dir) 
    	throws MessagingException, IOException {
    		for (int i=0, n=multipart.getCount(); i<n; i++) {
    			handlePart(multipart.getBodyPart(i),dir);
    		}
    	}
     
     
    	/**
             * extrait la piece jointe de <tt>part</tt> et la sauvegarde
             * dans le repertoire <tt>dir</tt>
             * @param multipart : differentes parties du mail
             * @param dir : repertoire ou doit etre stockes la piece jointe
             * @throws MessagingException
             * @throws IOException
             */
    	public void handlePart(Part part,String dir) 
    	throws MessagingException, IOException {
    		String disposition = part.getDisposition();
    		String contentType = part.getContentType();
     
     
    		if (disposition == null) { // When just body
    			part.writeTo(System.out);
    		} else if (disposition.equalsIgnoreCase(Part.ATTACHMENT)) {
    			log.debug("Attachment: " + part.getFileName() + " : " + contentType);
     
    			String name = part.getFileName();
    			if( name == null ){
    				name = "UNKNOWN_FILE.txt";
    			}
     
    			saveFile(dir + "/" + name , part.getInputStream());
    		} else {  
    			log.warn("Part Type unexpected : " + disposition);
    		}
    	}
     
     
    	/**
             * Sauvegarde le flux dans le fichier indiqué
             * @param filename
             * @param input
             * @throws IOException
             */
    	private void saveFile(String filename, InputStream input) throws IOException {
     
    		boolean overwrite = getBooleanProperty(PROP_OVERWRITE,VALUE_OVERWRITE);
     
    		File file = new File(filename);
     
    		if( file.exists() ){
    			if( overwrite ){
    				file.delete();
    			}else{
    				log.warn("File has already been saved : "  + filename);
    				return;
    			}
    		}
     
    		FileOutputStream fos = new FileOutputStream(file);
     
    		BufferedOutputStream bos = new BufferedOutputStream(fos);
     
    		BufferedInputStream bis = new BufferedInputStream(input);
    		int aByte;
    		while ((aByte = bis.read()) != -1) {
    			bos.write(aByte);
    		}
     
    		bos.flush();
    		bos.close();
    		bis.close();
    	}
    }

  6. #6
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Merci, maintenant ca marche.
    Qu'est ce que j'ai fait ? Je ne sais pas. qqs bidouilles dans les chemin d'accès, le paramètrage eclipse et les variables d'environnement.
    Ritchie.

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

Discussions similaires

  1. Erreur Eclipse - Fat Jar
    Par AnjouWeb dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 11/07/2007, 00h27
  2. [VBS] plus d'interface, saisie par DOS
    Par Amandine62 dans le forum VBScript
    Réponses: 3
    Dernier message: 20/01/2006, 10h41
  3. [Eclipse + Tomcat + Struts] lancement de Tomcat
    Par phoebe dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 24/05/2005, 11h17
  4. [Tomcat] [eclipse] probleme au lancement de mes jsp
    Par sandusa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/05/2004, 15h59

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