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 :

Module JavaFX 11 & OpenJDK 11.0.2


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut Module JavaFX 11 & OpenJDK 11.0.2
    Bonjour à tous,

    J'ai développé une application avec un GUI JavaFX. C'était la première fois que j'étais confronté aux modules dans Java.
    Cette application fait appelle aux librairies Guava & Gson.
    Jusqu'ici rien de bien particulier. Cela se complique lorsque je désire créer un executable JAR.
    Si je demande à mon IDE (voir ci-dessous) de créer celui-ci, je reçois l'erreur suivante :
    Error:Java FX Packager: Can't build artifact - fx:deploy is not available in this JDK

    Comment peut-on créer un executable JAR, lorsque l'on est confronté aux modules ?

    IntelliJ IDEA 2019.1 (Community Edition)
    Build #IC-191.6183.87, built on March 27, 2019
    JRE: 1.8.0_202-release-1483-b39 amd64
    JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
    Windows 7 6.1

    Merci pour votre aide !
    Serge

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 242
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Ma réponse est littéralement : je ne sais pas.

    Je sais que Intellij ne supporte pas jlink mais je sais aussi que jlink ne permet pas vraiment de créer un JAR exécutable unique. javapackager est dans les choux pour le JDK11 et 12 et jpackager son remplaçant, ne sera pas prêt avant le JDK13 (plus le temps derrière pour mettre en place le support dans les IDE) même si une version préliminaire est mise en place par Gluon, il faut tout faire a mano et le jour ou j'ai essaye je me suis perdu en route tellement j'ai pas compris comment ça fonctionne...
    Donc pour le moment j'utilise toujours javapackager dans NetBeans avec les JDK 8, 9 et 10 mais bon c'est pas vraiment fait pour créer un JAR unique.

    As-tu essaye de passer par Maven ou Graddle a la place pour voir si ca permettait plus facilement de faire ce que tu veux en incluant toutes les dependances dans un JAR unique ?
    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
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 242
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Bon alors ce que j'ai pu tester avec le JDK 12 + JavaFX 12 et IntelliJ 2019.1 :
    • Créé un projet Java
    • Créé une classe test.Main qui étend Application
      Code : 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
      package test;
       
      import javafx.application.Application;
      import javafx.stage.Stage;
       
      public final class Main extends Application {
       
          public static void main(final String... args) {
              launch(args);
          }
       
          @Override
          public void start(final Stage stage) throws Exception {
              stage.setTitle("Test");
              stage.show();
          }
      }
    • Ajouté les dépendances de JavaFX 12
    • Ajouté un module-info.java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      module test {
          exports test;
          requires javafx.base;
          requires javafx.graphics;
          requires javafx.controls;
      }
    • Créé une configuration pour lancer le projet
    • Vérifié que tout se lance
    • Créé un artefact JAR avec les options par défaut
    • Compilé l'artefact JAR
    • Ouvert le JAR et vérifié qu'il contient bien les dépendances de JavaFX12
    • Tenté de lancer le JAR en faisant 'C:\Program Files\Java\jdk-12\bin\java.exe' -jar .\00005_packagefx.jar
    • Et obtenu l'erreur :

      Code console : Sélectionner tout - Visualiser dans une fenêtre à part
      Error: JavaFX runtime components are missing, and are required to run this application
    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

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 242
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    pour ce que j'en vois ici et la il semble y a voir un souci avec le fait que le module javafx.graphics qui est requis par le lanceur JavaFX (rappel : java démarre les application JavaFX différemment des programmes normaux) ne peut pas être trouvé dans un JAR unique.

    Un début de solution semble être de faire une classe qui sert uniquement a faire démarrer le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package test;
     
    public final class Launcher {
        public static void main(final String... args) {
            Main.main(args);
        }
    }
    Et de mettre cette classe en tant que classe principale de l'artefact JAR.

    On a alors un erreur différente au lancement :

    Code console : 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
    20
    21
    22
    23
    24
    25
    > & 'C:\Program Files\Java\jdk-12\bin\java.exe' -jar .\00005_packagefx.jar
    Graphics Device initialization failed for :  d3d, sw
    Error initializing QuantumRenderer: no suitable pipeline found
    java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
            at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
            at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:243)
            at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
            at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
            at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
            at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
            at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
            at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
            at java.base/java.lang.Thread.run(Thread.java:835)
    Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
            at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
            at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
            ... 1 more
    Exception in thread "main" java.lang.RuntimeException: No toolkit found
            at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
            at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
            at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
            at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
            at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
            at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
            at java.base/java.lang.Thread.run(Thread.java:835)

    Ce qui semble indiquer qu'il manque la partie native (les DLLs/libs).

    Une erreur similaire est indiquee ici et la solution mentionnee est d'utiliser les fichiers Jmods et de revenir sur l'utilisation de jlink... par sur que ca aide donc... mouais ca marcherai peut-etre mieux avec Maven...
    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
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 242
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Sinon pour les tentative de faire fonctionner entre elles jlink] et la version preview de jpackager, voir ici... comme je disais j'ai pas été jusqu'au bout de l'affaire...
    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

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 242
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    DZone a un article sur l'utilisation de jpackage
    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

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup pour ces informations !
    Je vais m'intérèsser à Graddle, cela pourra peut-être résoudre mon problème.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : août 2018
    Messages : 3
    Points : 6
    Points
    6

Discussions similaires

  1. JavaFX sera disponible en tant que module open source distinct du JDK
    Par Christian Olivier dans le forum Général Java
    Réponses: 16
    Dernier message: 25/09/2018, 17h42
  2. module Find
    Par martijan dans le forum Modules
    Réponses: 8
    Dernier message: 09/07/2003, 11h07
  3. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  4. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

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