web-dev-qa-db-fra.com

IntelliJ ne reconnaît pas JavaFX 11 avec OpenJDK 11

Je ne parviens pas à faire reconnaître à IntellJ les packages JavaFX. Avec un nouveau projet JavaFX, avec OpenJDK 11, IntelliJ ne peut pas reconnaître les packages JavaFX lors de la tentative de construction du projet.

J'ai importé openjfx:javafx-base-11 à partir du dépôt Maven.

J'ai examiné d'autres questions et les solutions semblent aller de vérifier que le code secondaire est au bon niveau (le mien est) et que la langue du projet est correcte (le mien l'est).

Quelqu'un a des idées?

pic 1

pic 2

pic 3

Modifier:

Erreur:

enter image description here

46
AlwaysNeedingHelp

Comme mentionné dans les commentaires, le Guide de démarrage est l'endroit pour commencer avec Java 11 et JavaFX 11.

La clé pour travailler comme vous le faisiez avant Java 11 est de comprendre que:

  • JavaFX 11 ne fait plus partie du JDK
  • Vous pouvez l’obtenir de différentes manières, sous forme de SDK ou de dépendances régulières (maven/gradle).
  • Vous devrez l'inclure dans le chemin de module de votre projet, même si votre projet n'est pas modulaire.

projet JavaFX

Si vous créez un projet JavaFX standard par défaut dans IntelliJ (sans Maven ni Gradle), je vous suggère de télécharger le SDK à partir de ici . Notez qu'il existe également jmods, mais pour un projet non modulaire, le SDK est préférable.

Voici les étapes faciles à exécuter pour exécuter le projet par défaut:

  1. Créer un projet JavaFX
  2. Définissez JDK 11 (pointez sur votre version Java 11 locale)
  3. Ajoutez le SDK JavaFX 11 en tant que bibliothèque. L'URL pourrait être quelque chose comme /Users/<user>/Downloads/javafx-sdk-11/lib/. Cela fait, vous remarquerez que les classes JavaFX sont maintenant reconnues dans l'éditeur.

JavaFX 11 Project

  1. Avant d’exécuter le projet par défaut, il vous suffit de les ajouter aux options VM:

    --module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

  2. Courir

Maven

Si vous utilisez Maven pour générer votre projet, procédez comme suit:

  1. Créer un projet Maven avec l'archétype JavaFX
  2. Définissez JDK 11 (pointez sur votre version Java 11 locale)
  3. Ajoutez les dépendances JavaFX 11.

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    

Cela fait, vous remarquerez que les classes JavaFX sont maintenant reconnues dans l'éditeur.

JavaFX 11 Maven project

Vous remarquerez que Maven gère les dépendances requises pour vous: il ajoutera javafx.base et javafx.graphics pour javafx.controls, mais le plus important, il ajoutera le classifieur requis sur votre plate-forme. Dans mon cas, Mac.

C'est pourquoi vos jars org.openjfx:javafx-controls:11 sont empty , car il existe trois classificateurs possibles (plates-formes Windows, Linux et Mac), qui contiennent toutes les classes et l'implémentation native.

Si vous souhaitez toujours accéder à votre référentiel .m2 et récupérer les dépendances manuellement, veillez à choisir celle qui convient (par exemple .m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar).

  1. Remplacez les plugins Maven par défaut par ceux de ici .

  2. Exécutez mvn compile exec:Java et cela devrait fonctionner.

Des travaux similaires s'appliquent également aux projets Gradle, comme expliqué en détail ici .

EDIT

Le guide de démarrage mentionné contient les mises à jour documentation et des exemples de projets pour IntelliJ:

87
José Pereda

Aucun de ce qui précède n'a fonctionné pour moi. J'ai passé trop de temps à effacer les autres erreurs qui se sont produites. J'ai trouvé que c'était le moyen le plus facile et le meilleur.

Ceci fonctionne pour obtenir JavaFx sur Jdk 11, 12 et sur OpenJdk12 aussi!

  • La vidéo vous montre le téléchargement de JavaFx Sdk
  • Comment le définir comme une bibliothèque globale
  • Définissez le module-info.Java (je préfère celui du bas)

module thisIsTheNameOfYourProject {
    requires javafx.fxml;
    requires javafx.controls;
    requires javafx.graphics;
    opens sample;
}

La chose entière m'a pris seulement 5 minutes !!!

4
Yo Apps

Le problème que Java FX ne fait plus partie de JDK 11. La solution suivante fonctionne avec IntelliJ (je ne l'ai pas essayé avec NetBeans):

  1. Ajoutez la bibliothèque globale JavaFX en tant que dépendance:

    Paramètres -> Structure du projet -> Module. Dans le module, allez dans l'onglet Dépendances, cliquez sur le signe "+" -> Bibliothèque -> Java-> choisissez JavaFX dans la liste, puis cliquez sur Ajouter la sélection, puis sur Appliquer les paramètres.

  2. Cliquez avec le bouton droit sur le fichier source (src) de votre projet JavaFX et créez un nouveau fichier module-info.Java . Dans le fichier, écrivez le code suivant:

           module YourProjectName    
           { requires javafx.fxml;
             requires javafx.controls;
             requires javafx.graphics;
              opens sample;}
    

Ces 2 étapes vont résoudre tous vos problèmes avec JavaFX, je vous l’assure.

Référence: Il existe un tutoriel You Tube réalisé par le canal de programmation Learn, qui expliquera tous les détails ci-dessus en seulement 5 minutes. Je recommande également de le regarder pour résoudre votre problème: https://www.youtube.com/watch?v=WtOgoomDewo

4
Coder992