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 :

Problème de déploiement / Jar exécutable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut Problème de déploiement / Jar exécutable
    Bonjour à tous!

    Je suis confronté à un petit problème et, pour l'instant, je ne vois absolument pas d'où cela peut venir: le jar fonctionne sur mon PC mais donne un résultat erroné sur le PC de mes collègues!

    Pour mon stage, j'ai crée un programme en Java et je voulais tester rapidement son déploiement et son exécution sur une autre machine.
    Pour ce projet qui fait appel à un fichier de config, j'ai utilisé la bibliothèque ini4j.


    J'ai donc fais:
    - clic droit sur le projet
    - exporter
    - Fichier Jar executable
    - configuration de lancement: je sélectionne la classe qui contient le main
    - destination de l'exportation : desktop\essai.jar
    - je coche Extraire les librairies requises dans le fichier Jar généré
    - Terminer.

    Mon Jar apparait sur le bureau. Magnifique!
    Je double-clic dessus. Rien....

    Alors, j'ai trouvé cette astuce sur un autre site:
    en ligne de commande, je tape:
    java -jar essai.jar
    Je me prends une exeption : java.io.FileNotFoundException .....config.ini
    Alors, je copie mon fichier config.ini sur le bureau et je recommence.

    Et là, ça marche!

    Par contre, mon programme doit être installé par des clients qui ne sont pas forcément ceinture noire d'informatique alors si je mets un "readme" indiquant qu'il faut ouvrir une fenêtre DOS, je risque d'avoir des retours négatifs!

    Auriez vous une explication à tout cela et éventuellement, des propositions d'amélioration?

    J'ai déjà fouillé du côté du classpath et du MANIFEST.MF mais je débute et je ne comprends pas trop comment ça marche...

    Merci d'avance pour votre aide et bonne journée à tous!

    @+

    Thomas.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le problème ne vient pas du déploiement mais de ton programme : il plante s'il ne trouve pas le fichier de configuration.

    A toi de gérer cela dans ton code !!!


    a++

  3. #3
    Membre expérimenté Avatar de Mamypirate
    Homme Profil pro
    Samouraï
    Inscrit en
    Mai 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Samouraï
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 108
    Par défaut
    Lorsque tu génère ton .jar, celui ci ne contient pas le fichier config.ini.
    Si celui-ci n'est pas trouvé au chemin (relatif au .jar) précisé dans ton code, le java.io.FileNotFoundException est logique.

    La solution la plus simple me semble de livrer un dossier entier pour ton application :

    monApp/
    • monApp.jar
    • config/
      • config.ini


    Si tu choisies comme ci-dessus, de placer ton fichier config.ini dans un sous dossier, il ne faudra pas oublier de modifier ton code en conséquence. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new File("config/config.ini");
    Ensuite double-clic devrait bien se passer Il n'est pas nécessaire de lancer le jar en ligne de commande.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Merci pour ces 1ères réponses. Je me sens moins seul!

    J'ai donc essayé de livrer un dossier entier pour mon application. J'ai créé un dossier dans lequel j'ai mis mon config.ini et mon .jar .

    Lorsque j'exécute à partir de mon poste, ça marche du 1er coup. Niquel!

    Quand je passe ce dossier à un de mes collègues et que je lui demande de tester, il se passe un truc bizarre :
    L'appli se lance normalement et s'exécute.
    Par contre, elle doit allez récupérer un fichier via une URL avec cette ligne de commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Récupération de l'URL dans le fichier de config
    	lectureIni LCI = new lectureIni();
    	try {
    			String URLXXX = LCI.lectureURL(new Ini(new File("config.ini")));
    			UrlUtils URL = new UrlUtils((URLXXX)); 
    					} catch (InvalidFileFormatException e) {
    						e.printStackTrace();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    avec la classe lectureIni suivante:
    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
     
    public class lectureIni {
    public String lectureURL(Ini ini) {
    	Ini.Section section = ini.get("URLXXX");
     
    	// lecture des valeurs
    	String urlXXX = section.get("URLXXX");
     
    	System.out.println("URLXXX = " + urlXXX);
     
    	// INSCRIPTION AU LOG
    	// TODO : externaliser la chaine
    	Write wr = new Write();
    	wr.init(Messages.getString("l'url est : " + urlXXX));
    	return urlXXX;
     
     
    	}
    }
    Tout cela fonctionne parfaitement sur mon poste.
    Par contre, à partir d'un autre poste, le fichier n'est pas trouvé...

    Auriez vous des suggestions à ce sujet?

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben... Quel est l'erreur ? Quel est le code correspondant ? Où se situe le fichier exactement ?


    Le problème c'est que si tu utilises un chemin relatif, il faut savoir par rapport "à quoi", et cela peut varier selon l'OS ou la manière de lancer le programme...


    a++

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Le fichier à récupérer est stocké sur un serveur ftp.
    Dans mon fichier de config, j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [URLXXX]
    URLXXX = http://aaa.com/tom/XXX.txt
    Si mes collègues tapent l'URL dans leur navigateur, le fichier texte apparait.

    Je pense effectivement que le problème doit venir d'un bout de code que j'ai laissé avec un chemin relatif.
    Il faut que je corrige ça.

    Merci encore pour le coup de main!

    @+

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Bon ben c'était bien ça... (un problème de chemin relatif/absolu)

    En changeant le code c:\users\Thomas... par .\ , le fichier que je récupère se place à la racine de l'application.
    Ce n'est pas encore parfait mais au moins, je sais d'où viens le problème et comment le corriger.

    Merci à tous!

    @+

    Thomas

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

Discussions similaires

  1. Problème JTextfield sur jar exécutable
    Par Thrainsa dans le forum Langage
    Réponses: 1
    Dernier message: 23/07/2012, 19h03
  2. problème avec le .jar exécutable et les fichier .jrxml
    Par asma2009 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 23/07/2009, 11h05
  3. Problème avec un .jar exécutable
    Par neophytus dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 17/12/2008, 08h57
  4. Réponses: 7
    Dernier message: 10/03/2008, 12h26
  5. problème déploiement jar
    Par Dvoraky dans le forum JOnAS
    Réponses: 9
    Dernier message: 22/05/2007, 00h39

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