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 :

Problème pour déployer une application javafx


Sujet :

JavaFX

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 2
    Par défaut Problème pour déployer une application javafx
    Bonjour,

    Je suis actuellement en train de développer une application utilisant les librairies javafx que je développe à l'aide d'e(fx)clipse. J'ai réussi à obtenir une application qui fonctionne sous eclipse et je voudrai maintenant la transformer en exécutable pour pouvoir l'installer facilement sur n'importe quel ordinateur.

    J'ai donc suivi le tutoriel, https://code.makery.ch/fr/library/ja...utorial/part7/, pour utiliser build.fxbuild qui me semble permettre de fair ce que je souhaite, seulement lorsque je lance ant build sur le fichier build.xml la construction échoue en disant:

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    module not found: javafx.controls
    module not found: javafx.graphics
    module not found: javafx.fxml
    module not found: javafx.base
    module not found: com.google.gson
    module not found: org.apache.commons.net

    Cela correspond aux dependance renseignées dans le fichier module-info.java qui est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            requires javafx.controls;
    	requires javafx.fxml;
    	requires javafx.graphics;
    	requires java.desktop;
    	requires javafx.base;
    	requires com.google.gson;
    	requires org.apache.commons.net;
     
    	opens application to javafx.graphics, javafx.fxml;
    	opens application.controle to javafx.graphics, javafx.fxml;
    	opens application.modele to com.google.gson;
    Je ne comprends pas pourquoi cette erreur se produit étant donné que tous les jars correspondant ont été ajoutés au modulepath, apparaissent dans le sous-dossier externalLibs du dossier build et les chemins d'accès vers les fichiers correspondant sont bien renseignés dans le fichier build.xml:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    <copy todir="externalLibs">
    			<fileset dir="C:\Users\Raphi\AppLocal\javafx-sdk-20.0.2\lib">
    				<filename name="javafx.controls.jar"/>
    			</fileset>
    		</copy>

    Je ne sais pas si un lien existe, mais au moment de lancer ant_build.xml un message apparait disant:

    "the project is attached to a jre only so ant would be started with a JRE which does not have a compiler would you like to proceed and select a jdk."

    J'ai pourtant installer le jdk-17 de java et j'ai configuré l'environnement d'exécution sur celui-ci.

    Je ne sais pas du tout ce que je peux faire pour régler ce problème. Quelqu'un a-t-il une solution à ce problème?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    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 897
    Billets dans le blog
    54
    Par défaut
    Bonjour,
    je ne peux pas répondre directement car je n'utilise pas Eclipse et donc encore moins e(fx)clipse, mais, quand on passe par jpackage en ligne de commande, la transformation du JAR en app exécutable demande en effet l’intégration des jmods correspondants aux packages et modules de JavaFX dans la procédure.

    Par exemple dans mon cas, je me suis fait un script qui fait :

    Linux
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/sh
    export PATH=$PATH:$JAVA_HOME/bin
     
    export APP_NAME=<nom application>
    export MAIN_JAR=<nom JAR principal>
     
    export INPUT_DIR=<répertoire du JAR principal>
    export OUTPUT_DIR=<répertoire de sortie pour EXE natif>
     
    export FX_HOME=<chemin JavaFX SDK>
    export FX_LIBS=$FX_HOME/lib
    export FX_JMODS=$FX_HOME/jmods
     
    if [[ -d $OUTPUT_DIR/$APP_NAME ]]; then
    	rm -rf $OUTPUT_DIR/$APP_NAME
    fi
    mkdir -p $OUTPUT_DIR
    # Génération EXE natif
    jpackage --type app-image --input $INPUT_DIR --name $APP_NAME --main-jar $MAIN_JAR --module-path $FX_JMODS --add-modules java.logging,javafx.fxml,javafx.controls,javafx.swing --dest $OUTPUT_DIR

    Windows
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    @echo off
    set JAVA_HOME=<chemin JDK>
    set PATH=%JAVA_HOME%\bin;%PATH%
     
    set APP_NAME=<nom application>
    set MAIN_JAR=<nom JAR principal>
     
    set INPUT_DIR=<répertoire du JAR principal>
    set OUTPUT_DIR=<répertoire de sortie pour EXE natif>
     
    set FX_HOME=<chemin JavaFX SDK>
    set FX_LIBS=%FX_HOME%\lib
    set FX_JMODS=%FX_HOME%\jmods
     
    if exist %OUTPUT_DIR%\%APP_NAME% rmdir /s /q %OUTPUT_DIR%\%APP_NAME%
    if not exist %OUTPUT_DIR% mkdir %OUTPUT_DIR%
    REM Génération EXE natif
    jpackage.exe --type app-image --input %INPUT_DIR% --name %APP_NAME% --main-jar %MAIN_JAR% --module-path %FX_JMODS% --add-modules java.logging,javafx.fxml,javafx.controls,javafx.swing --dest %OUTPUT_DIR% --icon <chemin vers fichier ICO>

    macOS
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/sh
    export JAVA_HOME=<chemin JDK>
    export PATH=$PATH:$JAVA_HOME/bin
     
    export APP_NAME=<nom application>
    export MAIN_JAR=<nom JAR principal>
     
    export INPUT_DIR=<répertoire du JAR principal>
    export OUTPUT_DIR=<répertoire de sortie pour EXE natif>
     
    export FX_HOME=<chemin JavaFX SDK>
    export FX_LIBS=$FX_HOME/lib
    export FX_JMODS=$FX_HOME/jmods
     
    if [[ -d $OUTPUT_DIR/$APP_NAME ]]; then
    	rm -rf $OUTPUT_DIR/$APP_NAME
    fi
    mkdir -p $OUTPUT_DIR
    jpackage --type dmg --input $INPUT_DIR --name $APP_NAME --main-jar $MAIN_JAR --module-path $FX_JMODS --add-modules java.logging,javafx.fxml,javafx.controls,javafx.swing --dest $OUTPUT_DIR --icon <chemin vers fichier ICNS>

    Il faudrait comparer avec la ligne de commande générée par la tache ANT et modifier en fonction.
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2023
    Messages : 2
    Par défaut
    Merci pour votre réponse.

    Je n'ai pas réussi à régler le problème de l'utilisation du build.fxbuild mais je suis parvenu à créer un exécutable en contournant le problème. J'ai d'abord exporté le projet en un jar exécutable et j'ai créé un .bat que j'ai mis dans le même dossier que le .jar pour pouvoir lancer l'application. J'ai ensuite utilisé InnoSetup pour créer un exe qui permet également d'installer le fichier ressources dans lequel je sauvegarde les fichiers nécessaires au programme, le sdk javafx et un exe java pour l'installer si il n'est pa déjà installé sur la machine.

    code .bat:

    @echo off

    set FX_HOME=.\javafx-sdk-21
    set FX_LIBS=%FX_HOME%\lib

    java --module-path %FX_LIBS% --add-modules javafx.controls,javafx.fxml -jar Appli.jar

    Cette méthode n'est surement pas parfaite, mais permet d'obtenir un installateur pour transformer mon programme en application de bureau installable facilement sur d'autres ordinateurs

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    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 897
    Billets dans le blog
    54
    Par défaut
    C'est... une manière de faire.

    Je te suggère quand même fortement de tenter d'adapter à ta sauce ce que je t'ai posté ci-dessus, ça évitera d'avoir une fenêtre CMD qui traine et qui clôturera le programme dès que l'utilisateur essaiera de la fermer... Et la taille de l'app sera bien plus petite que d'avoir le JavaFX SDK complet... ou même de devoir installer le JDK sur la machine cliente... Tu pourras même empaqueter le résultat avec InnoSetup pour créer un installeur après.

    Enfin, bon...
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/11/2016, 11h07
  2. Problème pour déployer une application au sein de Tomcat.
    Par mhamdi200 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 07/04/2008, 13h17
  3. Réponses: 2
    Dernier message: 14/12/2007, 10h43
  4. Réponses: 4
    Dernier message: 09/05/2007, 17h03
  5. Réponses: 5
    Dernier message: 24/09/2005, 20h31

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