Exécution différente sous Eclipse et sous forme de fichier .jar
Résolu
Gian-Piero
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
greg6614 Messages postés 592 Date d'inscription Statut Membre Dernière intervention -
greg6614 Messages postés 592 Date d'inscription Statut Membre Dernière intervention -
J'utilise Eclipse Luna 4.4.1 sous openSUSE 13.2. J'ai réalisé une application qui fonctionne correctement sous Eclipse mais pour laquelle une fonctionalité n'est pas utilisable lorsque j'utilise le fichier .jar correspondant, sous Linux, Windows ou Mac.
La fonctionalité posant problème est la fermeture de l'application au moyen de la croix située en haut à droite de la fenêtre. L'application est fermée par ce moyen dans Eclipse mais pas avec le fichier .jar.
Voici les codes correspondant:
Dans le JFrame CinFrame, j'utilise la ligne:
J'ai d'autre part une position "Quitter l'application" dans un menu qui est la fonction principale à utiliser pour terminer l'application.
Où se trouve l'erreur? Merci par avance de vos réponses.
La fonctionalité posant problème est la fermeture de l'application au moyen de la croix située en haut à droite de la fenêtre. L'application est fermée par ce moyen dans Eclipse mais pas avec le fichier .jar.
Voici les codes correspondant:
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
final CinFrame cf = new CinFrame();
SplashScreen splash = new SplashScreen(4000);
splash.showSplash();
// Fermeture de l'application par la croix à droite en haut
cf.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (JOptionPane.showConfirmDialog(cf,
"Quitter vraiment l'application?", "Quitter l'application?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
}
}
Dans le JFrame CinFrame, j'utilise la ligne:
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
J'ai d'autre part une position "Quitter l'application" dans un menu qui est la fonction principale à utiliser pour terminer l'application.
Où se trouve l'erreur? Merci par avance de vos réponses.
A voir également:
- Exécution différente sous Eclipse et sous forme de fichier .jar
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Eclipse java - Télécharger - Langages
- Comment réduire la taille d'un fichier - Guide
4 réponses
Merci de ta réponse.
Aurais-tu l'amabilité de me dire quelles versions de JDK tu utilises dans Eclipse et quelle version du JRE dans ton OS?
Merci par avance de ta réponse.
Gian-Piero
Aurais-tu l'amabilité de me dire quelles versions de JDK tu utilises dans Eclipse et quelle version du JRE dans ton OS?
Merci par avance de ta réponse.
Gian-Piero
Bonjour,
Pour ton problème la seule explication que j'ai c'est que tu ne passes pas par l’événement windowClosing auquel tu t'attends.
Tu pourrais utiliser le code suivant pour afficher tous les événements et identifier les différences qu'il y a entre Eclipse et ton jar.
https://codes-sources.commentcamarche.net/source/100424-afficher-tous-les-evenements-d-un-composant-awt-swing
Pour ton problème la seule explication que j'ai c'est que tu ne passes pas par l’événement windowClosing auquel tu t'attends.
Tu pourrais utiliser le code suivant pour afficher tous les événements et identifier les différences qu'il y a entre Eclipse et ton jar.
https://codes-sources.commentcamarche.net/source/100424-afficher-tous-les-evenements-d-un-composant-awt-swing
import java.io.File; import javax.swing.JOptionPane; import ccm.kx.swingTools.ListenerLogger; public class Main { public static void main(String[] args) { ListenerLogger.setPath(new File("src")); final CinFrame cf = new CinFrame(); ListenerLogger.logListeners(cf); SplashScreen splash = new SplashScreen(4000); splash.showSplash(); // Fermeture de l'application par la croix à droite en haut cf.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { if (JOptionPane.showConfirmDialog(cf, "Quitter vraiment l'application?", "Quitter l'application?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { System.exit(0); } } }); } }
Merci à tous pour vos réponses.
En fait, le problème vient du fait que j'ai commis une erreur impardonnable, qui est la suivante:
mon code comprend la ligne:
pour gagner du temps en développant, je n'ai pas placé l'image correspondante dans le répertoire de travail, au lieu de simplement commenter la fameuse ligne!
Mea culpa, mea maxima culpa!
Merci encore à tous.
En fait, le problème vient du fait que j'ai commis une erreur impardonnable, qui est la suivante:
mon code comprend la ligne:
splash.showSplash();
pour gagner du temps en développant, je n'ai pas placé l'image correspondante dans le répertoire de travail, au lieu de simplement commenter la fameuse ligne!
Mea culpa, mea maxima culpa!
Merci encore à tous.