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

SWT/JFace Java Discussion :

generer .Jar pour SWT


Sujet :

SWT/JFace Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Par défaut generer .Jar pour SWT
    salut tt le monde,
    J'ai réaliser une application avec SWT,
    et j'ai un problème pour générer le fichier .jar.
    svp comment résoudre ce problème ??
    et merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    Tu utilise eclipse ? normalement il faut faire clic droit sur le projet > export mais je suis aussi débutant sous java et j'ai jamais réussit encore

    Pourtant je précise bien la classe qui contient le main mais il me sort "Could not find the main class. Program will exit"

    Le manifest qu'eclipse créer est incomplet aussi, pas de Class-Path: .\lib\hsqldb.jar .\lib\jmf.jar pourtant j'utilise ses 2 jar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Sealed: true
    Main-Class: FrameVisuDiapo
    Quelqu'un connaitrait un bon tuto pour eclipse avec des screen voir un streaming/video ?

  3. #3
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Par défaut
    Salut
    Il faut ajouter à la ligne ClassPath du manifest le chemin vers les jars SWT, c'est une question mille et une fois posée.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    Eclipse gère pas les jar tous seul ?

    Ce manifest devrait pas marcher ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Manifest-Version: 1.0
    Created-By: 1.4.1_01 (Sun Microsystems Inc.) 
    Main-Class: TestJarExe
    Class-Path: swt.jar org.eclipse.swt.win32.win32.x86_3.2.0.v3232m.jar

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    il manquais les 4 dll de swt ( type swt-XXX-win32-3232.dll ) qui se trouve dans le jar org.eclipse.swt.win32.win32.x86_3.2.0.v3232m.jar

  6. #6
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Bonjour,

    J'ai tenté plein de trucs depuis quelques temps, lu tout un tas de topics, lu les faqs, pas moyen d'exécuter le jar que j'ai créé avec Eclipse.

    Mon appli SWT tourne très bien (comme c'est souvent le cas apparemment) lorsque je la lance depuis Eclipse.

    Dès que je lance le fichier jar exporté sur mon bureau Windows depuis Eclipse, via l'invite de commandes DOS, il me met une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
    J'ai tenté de modifier le fichier MANIFEST, mais sans succès ....
    La logique voudrait que je n'aie pas à y toucher puisqu'Eclipse est censé faire le boulot tout seul.
    Je lui ai spécifié le jar externe de swt et j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.NoClassDefFoundError: lancement/Start
    NB : Start.java contient le main

    Si quelqu'un a une nouvelle lanterne pour m'éclairer ...

    Citation Envoyé par La FAQ
    Tout d'abord, il convient de créer un fichier Manifest.
    Ce fichier contiendra le nom de la classe à exécuter ainsi que les archives à mettre dans le CLASSPATH.
    Dans ce cas peut-on m'expliquer l'intérêt d'avoir un fichier MANIFEST et un fichier CLASSPATH

    Désolée de ne pas voir ce qui doit être gros comme le nez au milieu de la figure, c'est la première fois que je m'essaie à ce genre d'exercice, mais là, j'en perds mon latin ...

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    A aucun moment il n'est marqué dans la FAQ qu'il faut un fichier CLASSPATH.

    Le fichier CLASSPATH est juste un fichier utilisé par eclipse, pas quelquechose faisant partie de la spec java.
    Le classpath d'une appli en jar doit être spécifié dans le fichier manifest.

  8. #8
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Merci déjà pour cette réponse, elle correspond à ma dernière question.

    Je lui ai rajouté dans le manifest le chemin de tous les jars externes dans le classpath. Mon problème subsiste toujours cependant, et je n'arrive pas à trouver ce qui coince

    Je persévère ...

  9. #9
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Par défaut
    Tu pourrais nous donner le contenu de ton manifest pour vérifier que tu t'es pas trompé a ce niveau ?

  10. #10
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Oui.

    Pour info, j'ai copié tous les jar externes dont j'avais besoin dans un répertoire lib.

    Je peux :
    - soit inclure ce répertoire dans mon jar exécutable
    - soit mettre ce répertoire et le jar exécutable dans un répertoire projet

    Je ne sais pas quelle est la meilleure solution je vous avoue. J'ai lu tellement de choses ...

    Voici mon MANIFEST.MF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Manifest-Version: 1.0
    Main-Class: lancement.Start
    Class-Path: lib\org.eclipse.swt.win32.win32.x86_3.2.2.v3236m.jar lib\msbase.jar lib\mssqlserver.jar lib\msutil.jar lib\org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar lib\org.eclipse.ui.forms_3.2.0.v20060602.jar
    (ligne vide)
    Edit : oups, j'allais oublier, voici l'erreur que j'obtiens dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite at lancement.Start.main(Start.java:17)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te manque le jar de swt (par contre tu as bien celui spécifique à windows)

  12. #12
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    C'est celui-là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.eclipse.swt_3.2.2.v3236b.jar
    Si oui, je viens de l'ajouter, mais sans succès ...

    Un autre truc me trouble :
    - Si je lance l'exécutable en ayant spécifié le chemin absolu des librairies sur mon poste, il a l'air de les trouver, mais ne semble plus trouver le main
    - Si je lance l'exécutable en ayant spécifié le chemin relatif (ci-dessus) des librairies dans lib, on dirait que c'est la librairie qui coince, mais il entame quand même le traitement du main

  13. #13
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Bon, j'ai trouvé un moyen d'obtenir un jar exécutable avec les librairies externes. J'ai pour cela téléchargé le plugin 'fat-jar' pour Eclipse. Il se trouve ici : http://sourceforge.net/projects/fjep

    Il me reste encore un petit souci à régler pour que cela fonctionne, lui spécifier l'emplacement de la librairie swt-win32-3236.dll lors de l'exécution.

    Je m'explique :
    Lorsque je lance le jar en ligne de commande, il me signale qu'il ne trouve pas cette librairie. Elle figure pourtant bien à la racine du jar exécutable.
    Si je lui passe l'emplacement de la librarie (sur mon poste) en argument au lancement (toujours en ligne de commande), ça fonctionne.

    J'ai tenté de lui spécifier l'emplacement de ce dll dans le fichier MANIFEST, mais sans succès ; soit ce n'est pas ça qu'il faut faire, soit ma syntaxe dans MANIFEST était mauvaise ...

    Quelqu'un a une idée ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Fat Jar pose en général des problèmes au niveau JNI à cause de son classloader particulier? Donc pour SWT c'est pas top.


    Suis plutôt les étapes décrites à la page suivante: http://wiki.eclipse.org/FAQ_How_do_I...SWT_program%3F

  15. #15
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    C'est pas le classloader qui pose problème a priori, le jar fonctionne si je passe en argument la dll manquante.

    Il ne manque donc pas grand chose ...

    Edit : oups, au temps pour moi, il semble effectivement que ce soit le classloader. Il doit bien y avoir un moyen de résoudre ce problème

  16. #16
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Enfin, après des heures passées à batailler et chercher sur le net, j'ai trouvé une solution (il en existe certainement d'autres ...).

    Il me suffisait de copier les librairies *.dll contenues dans le jar au même niveau que le jar, ainsi que les images.

    Je mets tout ça dans un répertoire et ça fonctionne.


Discussions similaires

  1. Jar pour PDA OS windows ce
    Par Alexdezark dans le forum NetBeans
    Réponses: 2
    Dernier message: 13/02/2007, 18h19
  2. Réponses: 2
    Dernier message: 23/08/2006, 17h26
  3. Réponses: 8
    Dernier message: 18/04/2006, 12h16
  4. [RCP][plug-ins]Jars pour mes plugins dans un client RCP??
    Par tophebboy dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 14/03/2006, 16h56
  5. [plugins] quel plugins choisir pour swt et swing ?
    Par champion dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 14/06/2004, 09h46

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