IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Programme qui fonctionne sous eclipse mais pas une fois exporté


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2015
    Messages : 185
    Par défaut Programme qui fonctionne sous eclipse mais pas une fois exporté
    Bonjour à tous !

    Je suis en grosse galère et je ne sais plus quoi faire.
    Il y a quelques mois j'ai créé un jeu dont l'interface graphique a été réalisée à l'aide de Swing. Une fois exporté, le jeu a fonctionné nickel. Du coup je me suis mis sur un second jeu mais ce coup-ci en utilisant JavaFX pour l'interface graphique. Une fois passées les complications d'installation et configuration de JavaFX j'ai réussi à créer le jeu. Il fonctionne plutôt bien sous eclipse (il me reste quelques détails à régler).
    J'ai voulu l'exporter pour le tester mais tout d'abord j'ai eu un message d'avertissement : "VM arguments will not be part of the runnable JAR. Arguments can be passed on the command line when launching the JAR". Et effectivement, j'ai passé des arguments à mon projet pour qu'il fonctionne dans eclipse : "--add-modules javafx.controls,javafx.fxml". Ensuite, le jar ne s’exécute tout simplement pas...

    Du coup je suis perdu et je me pose pas mal de questions. Tout d'abord, dans la mesure où JavaFX n'est plus inclus dans le JDK, une personne ne possédant qu'un simple JRE pourra-t-elle exécuter mon jeu ? Parce que si pour exécuter un jar il faut installer le JRE puis JavaFX, ça devient un peu lourd quand même.

    Peut-on embarquer les librairies JavaFX dans l'exportation du projet ? (ça résoudrait peut-être mon problème)

    Dois-je exporter mon jeu en .exe via ant et Inno Setup ? J'ai essayé mais quand, après avoir rempli le fichier build.fxbuild, je clique sur "generate ant build.xml only", il ne se passe rien.

    Personnellement ce que je préfèrerais faire c'est créer un jar exécutable qui contiendrait tout ce qu'il faire pour être exécuté avec un simple JRE. Mais je ne vois pas comment faire...

    Je vous remercie d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Double cliquer sur des JAR pour lancer un programme est problématique :
    • souvent des gestionnaires d'archives vont remplacer la prise en charge des fichiers JAR pour les ouvrir directement (puisque ce sont des fichiers ZIP)
    • l'anti-virus peut éventuellement bloquer la prise en charge de ces fichiers pour éviter des programmes malicieux.
    • impossible de mettre des arguments


    Donc en général on va utiliser un lanceur, un fichier script (.bat sous Windows) ou un exec natif qui va faire le lancement du programme et généralement on utilisera aussi une JVM embarquée propre au programme pour éviter de taper dans une éventuelle JVM système (de plus en plus rare, souvent pas a la bonne version et aussi pour éviter des soucis de securite)

    • Pour commencer et tester un simple fichier .bat fera l'affaire. Ca a le soucis de laisser ouverte une fenetre de ligne de commande qui, si elle est fermée par l'utilisateur, fermera également le programme. Au moins ça permet de tester les bons arguments.
    • javapackager (JDK 8, 9 et 10) permet de lancer une application sur une JVM embarquée avec un fichier de conf (qui donne le nom du JAR principal et les arguments de lancement de la JVM). Pas de support des applications modulaires.
    • jlink (JDK 9+) permet de générer une JVM réduite mais avec des lanceurs sous forme de script (.bat pour Windows). Pas de support des applications non-modulaires.
    • jpackage (JDK 14+) est sensé remplacer javapackager
    • WinRun4J (et aussi sur GitHub) permet de créer des lanceurs natifs avec JVM embarquée ou système pour Windows. Ça a pas été mis a jour depuis longtemps...
    • Launch4j permet de créer des lanceurs natifs avec JVM embarquée ou système pour Windows. La dernière version date de 2018.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2015
    Messages : 185
    Par défaut
    Merci Bouye pour ta réponse.

    Je vais regarder du côté de javapackager parce que ça me tente bien. Le top je trouve c'est launch4j. J'avais essayé il y a quelques temps et ça n'avais pas marché. Je vais refaire un essai.

    Le truc qui me déroute c'est que mon premier jeu (java swing) s'exécute très bien via son jar exécutable alors que mon second jeu (javafx) lui ne s'exécute pas. Bien évidemment je parle sur le même ordinateur.
    Quand je clique droit sur le jar et que je fais ouvrir avec..., j'ai 2 choix : Winrar ou java platform qqchose... Je clique sur java machin et il ne se passe absolument rien...

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Oui mais quelle JRE ? Quelle version de Java ? Quelle version de JavaFX ?

    A partir du JDK 11 JavaFX n'est plus dans le JDK et donc il faut utiliser des paramètres supplémentaires sur la ligne de commande pour pointer sur les bonnes bibliothèques. Pire avec les applications modulaires il faut aussi lister les modules... donc un simple clic sur un JAR ne fonctionnera pas. Swing ca continue a marcher car lui il est toujours dans le JDK.

    De toute manière désormais il y a plus de JRE donc cette méthode n'est pas viable.

    Lance ton programme en ligne de commande (java -jar [...]) qu'on sache deja quelle est l'erreur qui est générée !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2015
    Messages : 185
    Par défaut
    Avec la commande java -jar monjeu2.jar j'ai ce message d'erreur :
    Error : JavaFX runtime components are missing, and are required to run this application
    Du coup j'ai modifié la commande : java -jar --add-modules javafx.controls,javafx.fxml -jar monjeu2.jar et là j'ai ce message :
    Error occured during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2015
    Messages : 185
    Par défaut
    ça y est, je me rappelle pourquoi je n'avais pas réussi à utiliser Lanch4j.
    Juste après l'avoir installé, au premier lancement j'ai ce message d'erreur : "This application requires a Java runtime Environment 1.6.0 - 1.8.9"...

Discussions similaires

  1. Job qui fonctionne dans talend mais plus une fois exporté
    Par Darkcristal dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 20/02/2019, 13h12
  2. Thread qui fonctionne sous eclipse mais pas depuis un jar ?
    Par POKOU dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 01/07/2014, 16h56
  3. [LibreOffice][Tableur] Une macro qui fonctionne sous Linux mais pas sous windows
    Par ludox62 dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 07/01/2014, 21h26
  4. Application qui fonctionne sous Eclipse mais pas sous Tomcat
    Par stoner2008 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 16/09/2013, 12h14
  5. Réponses: 5
    Dernier message: 13/04/2009, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo