JMF Jar exécutable avec Eclipse

Résolu
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012 - 12 mars 2012 à 18:45
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012 - 11 avril 2012 à 11:40
Salut tout le monde,

Pour mon projet actuel, j'utilise les librairies JMF 2.1.1, le programme tourne sans problème sur mon ordinateur personnel, mais je souhaiterais le distribuer à des amis qui sont intéressés.

Sous Eclipse 3.5.2, comment puis-je exporter un .jar exécutable avec les librairies JMF?

Les jars de JMF ont étés ajoutés dans le projet par : properties - java build path - add external jars.

J'ai déjà essayé l'option "Runnable JAR file", cette méthode ne fonctionne pas puisque quand je change d'ordinateur, en cliquent sur l’icône, il lance bien le processus "javaw.exe" mais rien ne s'affiche à l'écran.

D'où ma question, comment exporter un jar exécutable sous Eclipse pour toutes les machines windows? Quelle est la marche à suivre?

Merci d'avance,

Math11

40 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 mars 2012 à 19:49
Bonjour,

Tu peux réempaqueter les jars dans ton nouveau projet, c'est une case à cocher lorsque tu créés le .jar exécutable.

Après, tu as peut être encore un problème de chemin écrit en dur ou de chemin relatif incorrect ou encore d'accès à la base de données sur les autres poses ?
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 10:29
Salut Julien39,

Merci pour ta réponse. Lorsque tu dis "ré-empaqueter les jars" tu veux parler de l'option "Package required librairies into generated jar" ou "Extract required librairies into generated jar"?

Car pour moi, j'ai déjà testé les 2 options et aucune ne fonctionne.

Voici le fichier manifest de la version "Package":

Manifest-Version: 1.0
Rsrc-Class-Path: ./ multiplayer.jar mediaplayer.jar jmf.jar
Class-Path: .
Rsrc-Main-Class: SwingCapture
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader



Voici le fichier manifest de la version "Extract":

Manifest-Version: 1.0
Class-Path: .
Main-Class: SwingCapture

Name: javax/media/bean/playerbean/MediaPlayer.class
Java-Bean: True

Name: com/ibm/media/bean/multiplayer/MultiPlayerBean.class
Java-Bean: True


J'ai peut être oublié de précisé que j'ai installé le JMF 2.1.1e comme ceci:"C:\Users\math\JMF2.1.1e"
Devrais-je utiliser la version .zip du JMF?

Merci

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 10:36
Bonjour,

Je pensais à "Extract required librairies into generated jar" qui devrait fonctionner.

Tu n'as pas ajouté les jars au classpath de ton projet ? Tu as ajouté un dossier c'est ca ? Ou tu as copié les jars dans le dossier d'installation d'éclipse, ou bien as tu modifié le path pour que tes jars soient trouvés ?

Dans tous les cas, tu as mal ajouté les jars : la bonne facon de faire est de faire un click droit sur le projet puis de choisir classpath et configure.

Dans l'onglet libraires, tu fais add External jars et là, tu sélectionne un à un tous les jars a ajouter. Ce sont ces jars qui seront exportés dans ton .jar exécutable. Si tu modifies le path ou que tu ajoutes tes jars dans le dossier d'installation d'éclipse (qui est dans le path), ils ne seront pas exportés.
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 11:23
salut,

merci pour ton explication, mais je n'ai pas ajouté de dossier.

Ce que j'ai fait comme méthode c'est : click droit sur le projet, bouton "properties", bouton "Java Build Path", onglet librairie, bouton "Add external jars" et choix des jars : jmf.jar, mediaplayer.jar, multiplayer.jar

merci


math11
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 13:19
Dans ce cas, le problème ne vient pas de tes jars, si tu as coché "Extract required librairies into generated jar"

Quelle exception est levée ? Pour la récupérer, ouvre la console et tapes la commande suivante
C:\Program Files\jdk16\jdk-1.6.0_20\bin\java.exe -jar C:\appli.exe > C:\trace.txt

Il faut que tu modifies C:\Program Files\jdk16\jdk-1.6.0_20 pouir indiquer ton propre dossier d'installation de java.exe et que tu donnes le chemin vers ton jar.

Dans le fichier C:\trace.txt tu auras l'erreur.

Et je ne pense pas que ce soit une ClassNotFoundException
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 14:14
Salut,

Qu'est-ce que tu appelles "appli.exe" dans "C:"? Est-ce le projet?

D'autre part, je suis en "jdk1.7.0_02" situé ici: "C:\Program Files (x86)\Java\jdk1.7.0_02\bin\java.exe".

De plus, lorsque je tape ta commande, je tombe sur "Accès refusé".

Merci pour ton aide

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 14:22
Excuse moi, le appli.exe, en réalité c'est plutot appli.jar : c'est ton application java.

"C:\Program Files (x86)\Java\jdk1.7.0_02\bin\java.exe" -jar C:\appli.jar

Tu peux modifier l'emplacement de appli.jar, c'est juste un exemple.

Tu n'es pas administrateur de ton poste ? Est ce que tu as bien les droits d'exécution sur le fichier ?

Peut être que tu n'as pas de droits sur la partition C:, essaye sur D pour placer ton jar ?
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 14:22
Re:

la commande que tu m'a indiqué fonctionne, le "Accès refusé" vient du fait que je ne peut pas écrire dans "c:"

mais le fichier "trace.txt" est vide ...

merci encore

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 14:45
Ok, donc, aucune exception n'est levée.

Les jars de JMF ont donc bien été ajoutés à ton projet, dans le cas contraire, tu aurais une ClassNotFoundException.

L'erreur est donc ailleurs.

Tu n'as pas écrit ce genre de chose dans ton code :
catch(Exception e){
//Rien ou autre chose que e.printStackTrace()
}

Tu n'as pas catché les RuntimeException comme classNotFound par exemple ?
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 14:56
J'ai un
catch (java.io.FileNotFoundException io)
        {
          System.out.println("File Not Found" );
        }

mais il fait référence lors de l'enregistrement du fichier final, si la destination n'a pas été choisie

Mais a part ça c'est tout

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 15:39
Ça ne peut pas venir de ca.

Qu'est ce qui se passe exactement ?

Tu utilises une base de données ? Tu fais appel à des fichiers textes ? Des fichiers properties ? Des images ?

Et si oui comment ?

Tu dois utiliser des ressources qui ne sont plus disponibles dans le jar que tu exportes, c'est la seule explication.
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 16:10
Salut,

En fait c'est un programme qui permet de capturer, dans un dossier qui peut être choisi par l'utilisateur, des images depuis le flux d'une webcam.

Donc l'application ne fait pas appel a des ressources externes, a part une icône (en haut a gauche), qui se trouve dans le dossier ressources (que je n'arrives pas non-plus a exporter dans le jar). Voici le code pour l'icône:

 JFrame f = new JFrame("SwingCapture" );
 Image icone = Toolkit.getDefaultToolkit().getImage("./ressources/icone.jpg");
 f.setIconImage(icone);


Encore une fois, le problème ce situe lors de l'exécution sur un autre poste windows, puisque rien ne s'affiche à l'écran, malgré le lancement du processus "javaw.exe"

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2012 à 19:34
Ok, je n'utilise jamais de chemin relatif, c'est une source d'ennui, la preuve...

Pour exporter tes images dans le jar exécutable, je te conseil de suivre ce tutoriel : http://www.javafr.com/code.aspx?ID=51904
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
13 mars 2012 à 19:41
Salut,

merci pour le tuyau

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
14 mars 2012 à 14:51
Je viens de réalisé que j'ai commis une erreur lorsque je t'ai dit de rediriger la sortie console vers un fichier texte, j'ai oublié de te faire rediriger la sortie en erreur vers le même fichier, la commande correcte est :

"C:\Program Files\jdk16\jdk-1.6.0_20\bin\java.exe" -jar C:\appli.jar > C:\trace.txt 2>&1


Désolé si je t'ai fait prendre du retard...
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
15 mars 2012 à 15:25
Salut Julien39,

Tout d'abord, merci pour ton aide.

J'ai bien redirigé la sortie sur le fichier, mais il reste désespérément vide.

De plus, le fichier manifest n'a changé.

Quel pourrait-être le problème?

Merci encore

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 15:41
Qu'est ce qui se passe exactement quand tu lances ton programme, peux tu me donner le code de la classe de lancement ?

Est ce que ta base de données est bien accessible ? Tous les fichiers de config sont ils ok, tu peux peut être insérer des tests dans ta main au démarrage de l'application : une petite requete sur la base et un acces aux éventuels fichiers de config. Si tu fais des System.out.println, tu verras le résultat dans le fichier texte.

Tu as toujours fais des e.printStackTrace() sur les exceptions ?
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
15 mars 2012 à 15:50
re:

le programme n'a pas de base de données, pas de fichiers de configuration.

voici le main:


public static void main(String[] args)
      {
        JFrame f = new JFrame("SwingCapture" );
        SwingCapture cf = new SwingCapture();
        Image icone = Toolkit.getDefaultToolkit().getImage("./ressources/icone.jpg");
        f.setIconImage(icone);
        //déclaration de la barre de menu
        JMenuBar barre = new JMenuBar();
        //déclaration des menu
        JMenu menu = new JMenu("Configuration");
        JMenu menuAide = new JMenu("?");
        //déclaration des éléments de menu
        JMenuItem Dossier = new JMenuItem("Dossier");
        Dossier.setAccelerator(KeyStroke.getKeyStroke("F1"));
        JMenuItem apropos = new JMenuItem("À propos");
        apropos.setAccelerator(KeyStroke.getKeyStroke("F2"));
        JMenuItem menuQuitter = new JMenuItem("Quitter");
        //ajout des menu a la barre
        barre.add(menu);
        //barre.add(menuQuitter);
        barre.add(menuAide);
        //ajout des éléments aux menus
        menu.add(Dossier);
        menuAide.add(apropos);
        menuAide.add(menuQuitter);
        //ajout des écouteurs
        Dossier.addActionListener(new ActionListener() {
        	
public void actionPerformed(ActionEvent arg0) 
{ 
choose();
}

});
        menuQuitter.addActionListener(new ActionListener() {
        	
public void actionPerformed(ActionEvent arg0) 
{ 
System.exit(0);
}
        });	
        apropos.addActionListener(new ActionListener() {
        	
public void actionPerformed(ActionEvent arg0) 
{ 
fenAide();
}	

});
        f.setJMenuBar(barre);
        f.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
          playerclose();
          System.exit(0);}});
       
        f.add("Center",cf);
        f.pack();
        f.setSize(530,900);
        f.setResizable(false);
        f.setVisible(true);
      }




J'ai oublié de préciser que je débute avec java

math11
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 15:54
Cette ligne ne fonctionnera pas :
Image icone = Toolkit.getDefaultToolkit().getImage("./ressources/icone.jpg");

Je t'ai donné un tutoriel pour t'expliquer comment inclure des images dans ton jar !
0
cs_math11 Messages postés 47 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 31 mai 2012
15 mars 2012 à 16:22
Effectivement, mais dans le tutoriel, tu appliques a un JLabel :

public class Exemple extends JLabel{
private String nomImage;
public Exemple(String nom){
nomImage=nom+".png";
ImageIcon image = new ImageIcon(
this.getClass().getResource(nomImage));
setIcon(image);
setSize(50,50);
}
}


mais peut on faire cela?:

public class Exemple extends JFrame{
private String nomImage;
public Exemple(String nom){
nomImage="icone.jpg";
ImageIcon image = new ImageIcon(
this.getClass().getResource(nomImage));
setIcon(image);
setSize(50,50);
}
}


car j'ai le problème suivant:The method setIcon(ImageIcon) is undefined for the type SwingCapture.Exemple

math11
0
Rejoignez-nous