[Java] Problème excécution fichier.jar

Fermé
ixtobilly Messages postés 44 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 20 février 2009 - 7 mai 2007 à 21:35
ixtobilly Messages postés 44 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 20 février 2009 - 8 mai 2007 à 13:21
Bonjour les amis !

Une nouvelle fois j'ai besoin de vous.

Je travaille sur Windows et Mon répertoire de travail est le suivant : C:\Sun\jdevstudiobase10132\jdev\mywork\Application1\Project1Pfu\classes\project1pfu>

(Mon fichier ".class" s'appelle bureau.class et est bien dans ce répertoire)

Lorsque je lance mon programme avec la commande :

java project1pfu.bureau

Mon programme s'affiche correctement. La variable d'environnement ClassPath est correctement réglée

(En effet, le code de bureau.java commence par la ligne
package project1pfu;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.DefaultButtonModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

)


Je veux créer un fichier ".jar" qui va contenir ma classe excécutable, ainsi que les librairies nécessaires à son fonctionnement.

Mon but final est de déployer ce client sur un SA afin de le rendre accessible aux ordinateurs de mon réseau local via la technologie : Java Web Start


Je lance la commande :

jar cvfm project1pfu.jar MANIFEST.MF *.class C:\Sun\jdevstudiobase10132\jdev\lib\jdev-rt.jar C:\Sun\jdevstudiobase10132\jdev\extensions\oracle.jdeveloper.jgoodies.1.0.4\forms-1.0.4.jar
manifest ajoutÚ
ajout : bureau$1.class (entrÚe = 761) (sortie = 454) (40% compressÚs)
ajout : bureau$2.class (entrÚe = 761) (sortie = 456) (40% compressÚs)
ajout : bureau$3.class (entrÚe = 758) (sortie = 456) (39% compressÚs)
ajout : bureau$4.class (entrÚe = 763) (sortie = 460) (39% compressÚs)
ajout : bureau$5.class (entrÚe = 760) (sortie = 457) (39% compressÚs)
ajout : bureau$6.class (entrÚe = 759) (sortie = 452) (40% compressÚs)
ajout : bureau$7.class (entrÚe = 761) (sortie = 455) (40% compressÚs)
ajout : bureau$8.class (entrÚe = 759) (sortie = 455) (40% compressÚs)
ajout : bureau.class (entrÚe = 7668) (sortie = 3453) (54% compressÚs)
ajout : C:/Sun/jdevstudiobase10132/jdev/lib/jdev-rt.jar (entrÚe = 50955) (sortie = 47654) (6% compre
ssÚs)
ajout : C:/Sun/jdevstudiobase10132/jdev/extensions/oracle.jdeveloper.jgoodies.1.0.4/forms-1.0.4.jar
(entrÚe = 83278) (sortie = 76004) (8% compressÚs)


Ou MANIFEST.MF a le contunu suivant :

Manifest-Version: 1.0
Created-By: Willy
Main-Class: bureau
<retour chariot>

Le fichier project1pfu.jar est créé

Je voudrais ensuite l'exécuter sur la ligne de commandes:

Je lance: java -jar project1pfu.jar

Le résultat est :

Exception in thread "main" java.lang.NoClassDefFoundError: bureau (wrong name: project1pfu/bureau)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)


S'il vous plait les amis, pouvez vous m'aider à lever cette exception ?

Sinon dirigez moi vers des sites ou je pourais trouver de l'aide.
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 845
7 mai 2007 à 21:36
Tu as oublié de mettre le class-path dans le manifest et il faut aussi je crois que tu mettes tous tes .class dans le dossier du nom de ton package.
0
ixtobilly Messages postés 44 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 20 février 2009 4
7 mai 2007 à 21:53
J'ai modifié le Classpath comme suit dans le manifest:

Manifest-Version: 1.0
Created-By: Willy
Main-Class: bureau
ClassPath: C:\Sun\jdevstudiobase10132\jdev\lib\jdev-rt.jar C:\Sun\jdevstudiobase10132\jdev\extensions\oracle.jdeveloper.jgoodies.1.0.4\forms-1.0.4.jar

tous les ".class" sont effectivement Dans mon dossier project1pfu. (joir la commande de création du "jar" ds mon précédant message)

Le message persiste.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 845
7 mai 2007 à 22:19
Oui mais j'ai l'impression que les .class ne sont pas dans le dossier de ton package dans ton .jar. Vérifie ton .jar avec winrar pour voir s'il y a bien le dossier.
0
Utilisateur anonyme
8 mai 2007 à 07:36
Salut!

De mémoire, tu dois ajouter, dans ton MANIFEST, le nom du package à ta "main" class:

Manifest-Version: 1.0 
Created-By: Willy 
Main-Class: project1pfu/bureau 


Attention: tu ne dois pas utiliser des points pour séparer les packages mais bien des "/"

;-)
HackTrack
0
ixtobilly Messages postés 44 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 20 février 2009 4 > Utilisateur anonyme
8 mai 2007 à 10:30
Bonjour ! Merci pour ta réponse

J'ai apporté la modification (j'ai fait les deux tests suivants),

Manifest-Version: 1.0
Created-By: Willy
Main-Class: project1pfu/bureau
<retour chariot>


Manifest-Version: 1.0
Created-By: Willy
Main-Class: project1pfu/bureau
ClassPath: C:\Sun\jdevstudiobase10132\jdev\lib\jdev-rt.jar C:\Sun\jdevstudiobase10132\jdev\extensions\oracle.jdeveloper.jgoodies.1.0.4\forms-1.0.4.jar
<retour chariot>


et j'ai le message suivant :

Exception in thread "main" java.lang.NoClassDefFoundError: project1pfu/bureau

Message classique lorsque les librairies importées ne sont pas retrouvées. (Enfin d'après ma maigre expérience)
Je pense qu'il ne retrouve pas les ".jar" qui sont empacketés avec lui.

Comment faut il écrire la ligne classpath dans le manifest pourque le programme sache qu'il doit se reférer au ".jar" dans lequel il s'exécute ?

Merci
0
ixtobilly Messages postés 44 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 20 février 2009 4 > Utilisateur anonyme
8 mai 2007 à 12:23
Bonjour !

J'ai même essayé le manifest suivant :

Manifest-Version: 1.0
Created-By: Willy
Main-Class: project1pfu/bureau
ClassPath: jdev-rt.jar forms-1.0.4.jar

Toujours le même message:
Exception in thread "main" java.lang.NoClassDefFoundError: project1pfu/bureau

Autre idée ???
0