JMF Jar exécutable avec Eclipse [Résolu]

Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
- - Dernière réponse : cs_math11
Messages postés
47
Date d'inscription
mardi 9 août 2005
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
Afficher la suite 

Votre réponse

20/40 réponses

Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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 ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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.
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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 ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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 ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Ç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.
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
Salut,

merci pour le tuyau

math11
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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...
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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 ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
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 !
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
mardi 9 août 2005
Dernière intervention
31 mai 2012
0
Merci
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
Commenter la réponse de cs_math11

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.