Rechercher : dans
Par :

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

Dernière réponse le 8 mai 2007 à 13:21:25 ixtobilly, le 7 mai 2007 à 21:35:27 
 Signaler ce message aux modérateurs

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\Project1­Pfu\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.
Configuration: Windows XP
Firefox 1.5.0.11
JDEVELOPPER 10.2.3.4
java version "1.6.0_01"

Meilleures réponses pour « [Java] Problème excécution fichier.jar » dans :
Voir le contenu d'un fichier .jar Voir Rien de plus facile que de voir ce que contient un fichier .jar: Renommez-le en .zip et ouvrez-le ! Si vous voulez voir ce que contiennent les programmes java compilés .class, vous devrez utiliser un décompilateur Java tel que JAD:...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Java - Caractéristiques du langage VoirFichier source, compilation et machine virtuelle Le fichier source d'un programme écrit en Java est un simple fichier texte dont l'extension est par convention .java. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un...

1

fiddy, le 7 mai 2007 à 21:36:59

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.

Répondre à fiddy

2

ixtobilly, le 7 mai 2007 à 21:53:22

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.

Répondre à ixtobilly

3

fiddy, le 7 mai 2007 à 22:19:18

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.

Répondre à fiddy

4

HackTrack, le 8 mai 2007 à 07:36:56

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

Répondre à HackTrack

5

ixtobilly, le 8 mai 2007 à 10:30:02

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

Répondre à ixtobilly

6

ixtobilly, le 8 mai 2007 à 12:23:40

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 ???

Répondre à ixtobilly

7

HackTrack, le 8 mai 2007 à 13:07:14

Salut!

Tu ne devrais même pas te soucier du classpath. Ton problème ne vient pas de là puisque c'est ta classe "bureau.class" qu'il ne trouve pas.

As-tu essayé d'ouvrir ton fichier JAR avec Winzip ou un autre utilitaire du genre pour voir si ta classe "bureau.class" se trouve bien sous "project1pfu" dans ton JAR?

Si ce n'est pas le cas, l'erreur vient de là.

Autre chose: donne toujours un nom qui commence par une majuscule à tes classes.

;-)

Répondre à HackTrack

8

 ixtobilly, le 8 mai 2007 à 13:21:25

Oui tu as raison !
J'ai du créer un rep project1pfu dans lequel j'ai mis tous les .class

Quant au manifest, je l'ai modifié au niveau de Main-Class

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

J'ai refait le jar, et tout marche bien maintenant

Répondre à ixtobilly