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 :

Créer une archive exécutable avec Eclipse


Sujet :

Eclipse Java

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut Créer une archive exécutable avec Eclipse
    Bonjour à tous,

    Cela fait quelques jours que j'essaie de créer un jar exécutable.
    Le fichier jar se créer bien. Le programme fonctionne presque.
    J'ai besoin d'écrire dans un fichier dans le jar exécutable. Il me renvoi une erreur.
    J'ai également un problème avec les photos, elles ne s'affichent pas.
    Pourtant quand je teste avec eclipse tous fonctionne!

    J'ai également ajouté un driver pour me connecter avec mysqlconnector.
    Le problème est que je suis obligé de placer ce fichier en dehors du jar exécutable. Peut on le placer à l'intérieur?
    Voici mon code du manifest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: com.test.vue.Main
    Class-Path: ./mysql-connector-java-5.1.13-bin.jar
    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    avez-vous consulter la FAQ Eclipse ? :http://eclipse.developpez.com/faq/?p...t#exporterJar2

    Je pense que vous auriez dû poster dans le forum Eclipse, vous y aurez plus de chance d'y trouver une réponse.

    En ce qui concerne les images qui n'apparaissent pas, peut être que le dossier contenant celles-ci n'a pas été intégré dans le projet...
    En demandant les propriétés de votre projet (clic-droit sur le projet dans la vue 'Package explorer', puis 'Properties'), vérifiez dans l'onglet 'Source' de la fenêtre qui s'ouvre, si le dossiers contenant vos photos fait partie du projet.

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    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
    Citation Envoyé par peofofo Voir le message
    Il me renvoi une erreur.
    laquelle?

    Citation Envoyé par peofofo Voir le message
    J'ai également un problème avec les photos, elles ne s'affichent pas.
    Pourtant quand je teste avec eclipse tous fonctionne!
    Sont-elles bien dans le jar? Comment les chargez vous?
    Citation Envoyé par peofofo Voir le message
    J'ai également ajouté un driver pour me connecter avec mysqlconnector.
    Le problème est que je suis obligé de placer ce fichier en dehors du jar exécutable. Peut on le placer à l'intérieur?
    Oui, il vaut mieux le garder en dehors. On peu faire un "fat jar" avec les libiraires (tout fusionner), mais quand on commencer à augmenter le nombre de jars dont on dépend, ca deviens vite impossible à faire car ces jars entrent en conflit (api service, classes identiques, etc).

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci de m'aider

    Désolé de ne pas avoir été assez explicite.
    Le projet s'appelle Test
    Le fichier que je cherche a ouvrir s'appelle sack.lic.
    Il se situe dans le projet Test/file/sack.lic

    Lorsque j'essaie de mettre la licence a jour, j'ai cette erreur:
    Ecriture - Fichier pas trouvé depuis le chargement du fichier sack !

    Normalement, je devrais avoir ce message à l'ouverture:
    Lecture - Fichier fichier sack trouvé !
    Alors que je n'ai rien.

    Voici la classe concerné :
    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
    package com.peofofo.model;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
     
    import javax.swing.JOptionPane;
     
    public class LicenceSerializer {
     
     
    	private int licence;
    	public LicenceSerializer(){
    		try {
    			File file = new File("file/sack.lic");
    			if(file.length() > 0)
    			{
    				ObjectInputStream ois = new ObjectInputStream(
    											new BufferedInputStream(
    												new FileInputStream(
    														file)));
     
    				Valide_licence listelicence = (Valide_licence)ois.readObject();
    				ois.close();
    				listelicence.toString();
    				licence= listelicence.licenceGet();
    				System.out.println("Lecture "+listelicence.toString());
    				JOptionPane.showMessageDialog(null, "Lecture - Fichier fichier sack trouvé !\n Lecture "+listelicence.toString()+"\n", "OK", JOptionPane.ERROR_MESSAGE);
    			}
    			else{
    				System.out.println("Le logiciel n'est pas enregistré");
    			}
     
    		} catch (FileNotFoundException e) {
    			JOptionPane.showMessageDialog(null, "Lecture - Fichier pas trouvé depuis le chargement du fichier sack !\n" + e.getCause()+"\n", "ERREUR", JOptionPane.ERROR_MESSAGE);
    		} catch (IOException e) {
    			JOptionPane.showMessageDialog(null, "Lecture - IO Exeption depuis le chargement du fichier sack !\n" + e.getCause()+"\n", "ERREUR", JOptionPane.ERROR_MESSAGE);
    		} catch (ClassNotFoundException e) {
    			JOptionPane.showMessageDialog(null, "Lecture - ClassNotFound depuis le chargement depuis le fichier sack !\n" + e.getCause()+"\n", "ERREUR", JOptionPane.ERROR_MESSAGE);
    		}	
    	}
     
     
    	public void serialize(Valide_licence listelicence){
    		System.out.println("Ecriture : " + listelicence.toString());
    		try {
    			ObjectOutputStream oos = new ObjectOutputStream(
    										new BufferedOutputStream(
    												new FileOutputStream(
    														new File("file/sack.lic"))));
    			oos.writeObject(listelicence);
    			oos.close();
     
    		} catch (FileNotFoundException e) {
    			JOptionPane.showMessageDialog(null, "Ecriture - Fichier pas trouvé depuis le chargement du fichier sack !\n  !", "ERREUR", JOptionPane.ERROR_MESSAGE);
    		} catch (IOException e) {
    			JOptionPane.showMessageDialog(null, "Ecriture - IO Exeption depuis le chargement du fichier sack !\n", "ERREUR", JOptionPane.ERROR_MESSAGE);
    		}
     
    	}
    	public int getLicence(){
    		return this.licence;
    	}
    }

    Voici une erreur que j'ai eu lorsque j'essaie de créer un exécutable Jar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JAR creation failed. See details for additional information.
      Resource is out of sync with the file system: '/Test/file/sack.lic'.
    Merci, j'ai compris pour l'exécution du jar en dehors du projet.
    Cependant j'ai trouvé que l'on pouvait inclure le jar en créant un fichier Runnable JAR file. Qu'est ce la différence? Qu'en pensez vous?

    Merci encore

    PS: J'ai réussi a supprimer le message Resource is out of sync with the file system: '/Test/file/sack.lic en rafraichissant eclipse, mais je n'ai toujours pas de lecture et d'écriture du fichier sack.lic, toujours la même erreur.

  5. #5
    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
    Pour lire le contenu d'un jar, ou de tout ce qui se trouve dans le classpath, on utilise les méthodes getResource/getResourceAsStream présentes à la fois sur l'objet Class et sur Classloader (attention elle n'ont pas exactement le même comportement). Vous pouvez bannir de votre vocalbulaire la class File pour lire les ressources destinées à être embarquées. On ne peux pas non plus les écrire, il faudra faire avec.


    Pour inclure tout dans un jar, il faut l'extraire depuis les jars des librairies leur contenu pour le mettre tel quel dans votre jar final. Mais ce n'est pas la méthode propre, la méthode propre c'est de le mettre à coté de votre application.

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci tchize_

    J'ai résolu mon problème en copiant le répertoire du jar pour le mettre a coté, j'enregistre et lis avec succès.

    Si j'ai bien compris il faut mettre a coté de l'application les archives jar, les fichiers pour les lire ou les écrire. Il faut donc mettre également les photos?

    Si cette méthode est propre de mettre a coté les éléments externes, y a t'il une solution pour en tirer une vraie application? Je veux dire le moyen de rassembler le tous!

    Merci encore

  7. #7
    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
    si vous regardez les "vraies" application (java ou autres) c'est rarement un fichier unique. On ne le regroupe que pour les distribuer, l'installeur place tous les fichiers qui doivent être placés. C'est le meme principe en java.

  8. #8
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci pour toutes ses précisions

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

Discussions similaires

  1. Créer un jar exécutable avec Eclipse
    Par rolls dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 07/12/2009, 11h16
  2. Créer un fichier .jar exécutable avec Eclipse
    Par Bloodscalp dans le forum Eclipse Java
    Réponses: 21
    Dernier message: 23/05/2009, 00h22
  3. Créer une archive avec la date du jour dans le nom ?
    Par Seb33300 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/04/2008, 12h21
  4. Réponses: 3
    Dernier message: 14/04/2007, 19h46

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