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

Langage Java Discussion :

fichier jar en ligne de commande


Sujet :

Langage Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut fichier jar en ligne de commande
    bonjour,

    j'ai developper une application sous eclipse avec swt et j'ai creer un fichier .jar
    monappli.jar

    sous windows ca amrche tres bien sous eclipse et en ligne de commande en mettant la dll swt

    sous linux il fonctionne tres bien sous eclipse mais en ligne de commande il me demande no swt-win32-3346 or swt-win32 in swt.library.path, java.library.path or the jar file

    ce qui est bizarre c'est que sous eclipse ca fonctionne bien.

    je suppose que ca viebs du classpath ?

    comme il y en partout, dans eclipserc, dans le .profile.

    ou dois je positionner ces variables (swt.libray.path ou java.libray.path) ?

    Merci de votre aide.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    En fait il cherche la lib de swt (tu l'a bien compris), cette lib est cherchée dans java.library.path (par défaut: <JAVA_HOME>/lib) et dans le swt.library.path (ça doit être le répertoire lib de l'installation de SWT).
    Cependant il regarde aussi dans le classpath (heureusement lol) donc tu peux mettre les lib dans ton classpath (dans un sous-dossier par ex).
    Ensuite il faut que tu référence tout cela comme il faut dans le manifest

    a+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    donc si je met dans la variable CLASSPATH dans propriete duposte de travail/variable d'environnement:

    j'ai creer le repertoire swt dnas le lib de java et les fchier de swt dedans

    CLASSPATH=c:\programm files\java\jre1.6.0.02\lib\swt

    et j'ai mis aussi dans le fichier manifest avant de creer mon jar:
    Class-Path: JAVA_HOME/lib/swt

    mais apparemment ca ne marche pas.

    il doit manquer quelque chose.

    Merci.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Ligne de commande pour lancer un programme SWT sous windows:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath .;..\org.eclipse.swt_3.1.0.jar;..\org.eclipse.swt.win32.win32.x86_3.1.0.jar -Djava.library.path=.. org.eclipse.swt.examples.controlexample.ControlExample
    dans le classpath (option -classpath) tu mets les jar contenant les source java de SWT. Le classpath doit contenir le jar de SWT (swt_x.x.x.jar) et le jar spécifique à l'OS (win32.x86_x.x.x.jar)
    Dans le java.library.path (-Djava.library.path=..) tu mets le répertoire où sont stockées tes DLL à la place de .. .


    Trouvé tout bêtement sur la page d'exemples de SWT... Trop là mort à trouver
    http://www.eclipse.org/swt/examples.php

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    dans ton example c'est uniquement valable pour l'os XP mais si ej veux le lancer sous linux je doit remplacer la lib win32 par swt-gtk ? c'est bien ca ?

    j'ai vu l'example du site mais c'est pas tre bien expliquer , si je prend mon cas

    dans le repertoire monprog, je met monprog.jar
    et les deux librairie ci dessous (org.eclipse.swt_3.1.0.jar et org.eclipse.swt.win32.win32.x86_3.1.0.jar)

    je tape la commande en remplacant les .. par . car dans le meme repertoire:
    java -classpath .;.\org.eclipse.swt_3.1.0.jar;.\org.eclipse.swt.win32.win32.x86_3.1.0.jar -Djava.library.path=. -jar monprog.jar

    ca ne fonctionne pas.

    est ce qu'il faut mettre

    -Djava.library.path=.
    ou
    -Dswt.library.path=.

    car c'est du java avec swt.

    faut-il mettre des / ou des \ dans la ligne de commande ?

    Merci de votre aide.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    lorsque je lance avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java -classpath "D:\Program Files\eclipse\plugins\org.eclipse.swt_3.3.0.v3346.jar;C:\Program 
     
    Files\Java\jre1.6.0_02\lib\swt\org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar;." 
     
    -Djava.library.path="C:\Program Files\Java\jre1.6.0_02\lib\swt"  -jar monprog.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite

    je precise que mon programme est un jar et non un .class.

    Merci de votre aide

  7. #7
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    C'est parce que lorsque tu utilise l'option -jar de java pour exécuter un jar exécutable alors l'option -classpath est purement et simplement ignoré.

    Il faut que tu référence le jar de swt directement dans le manifest de ton jar via une clause Class-Path.


    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Manifest-Version: 1.0
    Main-Class: org.toto.maClassePrincipale
    Class-Path: lib/org.eclipse.swt_3.1.0.jar;
    lib/org.eclipse.swt.win32.win32.x86_3.1.0.jar
    Ici on suppose que les jars de swt se trouve dans un répertoire lib situé à coté de ton jar.

    Note: ne pas oublier d'insérer un saut de ligne à la fin du manifest car cela peut poser des problème s'il n'y a pas de saut de ligne terminal.

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans ce cas c'est dans le manifest de ton jar qu'il faut préciser ces options.

    Pour SWT cadeau: http://www.javalobby.org/forums/thre...15512&tstart=0

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    ben en effet la ca marche en mettant juste swt.jar dans le classpath, comme indiquer sur le lien, par contre ca marche uniquement pour windows et pas sous linux

    j'ai refait le fichier manifest comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Manifest-Version: 1.0 
    Class-Path: lib/swt.jar;lib/org.eclipse.swt_3.3.0.v3346.jar;lib/org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar
    Main-Class: TestSWT2
    ca ne marche plus sous windows et ni sous linux.
    j'ai ce message d'erreur

    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge
    ts/Composite

    comment integrer les deux os pour que ca fonctionne ?

    ou est l'erreur ?

    Merci de votre aide.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    quels sont les librairies que je doit mettre pour que ca fonctionne sous linux et windows ?

    le swt.jar fonctionne bien sous windows.

    Merci de votre aide.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    ben en faisant des tests pour que ca fonctionne sous windows je dois mettre le swt.jar de windows et pour linux le swt.jar de linux, du coup je me retrouve avec deux applications, une windows et une autre pour linux, je trouve que ce n'est pas tres portable, je pensait que java fonctionnait directement dans tout les system ,ca fait un programme pour chaque os.

    si quelqu'un a une idee la dessus.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    C'est parce que lorsque tu utilise l'option -jar de java pour exécuter un jar exécutable alors l'option -classpath est purement et simplement ignoré.

    Il faut que tu référence le jar de swt directement dans le manifest de ton jar via une clause Class-Path.


    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Manifest-Version: 1.0
    Main-Class: org.toto.maClassePrincipale
    Class-Path: lib/org.eclipse.swt_3.1.0.jar;
    lib/org.eclipse.swt.win32.win32.x86_3.1.0.jar
    Ici on suppose que les jars de swt se trouve dans un répertoire lib situé à coté de ton jar.

    Note: ne pas oublier d'insérer un saut de ligne à la fin du manifest car cela peut poser des problème s'il n'y a pas de saut de ligne terminal.
    sur ton exemple ca ne fonctionnait pas car il fallait mettre des espace et non des point virgule, pour moi ca a fonctionner uniquement pour windows

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    quel est la differene entre ces deux librarie .jar

    lib/org.eclipse.swt_3.1.0.jar;
    lib/org.eclipse.swt.win32.win32.x86_3.1.0.jar

    Merci de votre aide.

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est juste que le délimiteur du classpath dazns le fichier manifest n'est pas le ; mais le caractère espace...
    Merci de regarder un tant soit peu les tutos sur la création de jars exécutables, ce n'est de loin pas çà qui manque sur le net...

  15. #15
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    • org.eclipse.swt_3.1.0.jar : code de base standard de SWT, en Java pure et donc totalement portable.
    • org.eclipse.swt.win32.win32.x86_3.1.0.jar : code spécifique aux plateformes Windows (code Java + librairie native)


    a++

  16. #16
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Désolé, je m'excuse, j'ai fait ça de tête.

    Sinon pour la pseudo non-portabilité, c'est dû au fait qu'il y a des librairies natives dans les jars de swt et donc par définition non portables.

  17. #17
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    donc par définition non portables.
    Non portable "binairement", puisqu'elle sont portable au niveau du source.
    C'est à dire qu'il faut générer une librairie par système cible...

    a++

  18. #18
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Non portable "binairement", puisqu'elle sont portable au niveau du source.
    C'est à dire qu'il faut générer une librairie par système cible...

    a++
    Oui bien sur, "binairement".

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    oui c'est ce que je pensais, donc il, faut bien un programme pour chaque OS quand on utilise SWT.

    donc le probleme est regle.

    Merci avous.

  20. #20
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par andromeda Voir le message
    oui c'est ce que je pensais, donc il, faut bien un programme pour chaque OS quand on utilise SWT.
    Non il ne faut pas un programme pour chaque OS, et mis à part si tu fais du code spécifique à une plateforme :
    • Ton jar principal et le jar org.eclipse.swt_3.1.0.jar restent identique d'une plateforme à l'autre.


    En gros tu n'as juste qu'à fournir le jar org.eclipse.swt.*.*.x86_3.1.0.jar correspondant à l'OS cible...

    a++

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Convertir un fichier HTML en fichier PDF en ligne de commande
    Par koKoTis dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 15/06/2009, 23h06
  2. probleme pour lancer un jar en ligne de commande
    Par progamer54 dans le forum Langage
    Réponses: 11
    Dernier message: 05/12/2007, 15h35
  3. Convertir un fichier HTML en fichier CHM en ligne de commande
    Par koKoTis dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 18/11/2006, 13h39
  4. Imprimer fichiers images en ligne de commande
    Par naholyr dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 02/09/2004, 18h11

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