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.
Version imprimable
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.
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 :aie:
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
Quelqu'un connaitrait un bon tuto pour eclipse avec des screen voir un streaming/video ?Code:
1
2
3 Manifest-Version: 1.0 Sealed: true Main-Class: FrameVisuDiapo
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.
Eclipse gère pas les jar tous seul ?
Ce manifest devrait pas marcher ?
Code:
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
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
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.
J'ai tenté de modifier le fichier MANIFEST, mais sans succès ....Code:Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
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 :
NB : Start.java contient le mainCode:Exception in thread "main" java.lang.NoClassDefFoundError: lancement/Start
Si quelqu'un a une nouvelle lanterne pour m'éclairer ...
Dans ce cas peut-on m'expliquer l'intérêt d'avoir un fichier MANIFEST et un fichier CLASSPATH 8OCitation:
Envoyé par La FAQ
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 ... :roll:
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.
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 ...
Tu pourrais nous donner le contenu de ton manifest pour vérifier que tu t'es pas trompé a ce niveau ?
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 :
Edit : oups, j'allais oublier, voici l'erreur que j'obtiens dans la console :Code:
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)
Code:Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite at lancement.Start.main(Start.java:17)
Il te manque le jar de swt (par contre tu as bien celui spécifique à windows)
C'est celui-là ?
Si oui, je viens de l'ajouter, mais sans succès ...Code:org.eclipse.swt_3.2.2.v3236b.jar
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
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 ?
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
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 :?
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.
:aie: