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?
Modifier:
Erreur:
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:
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:
/Users/<user>/Downloads/javafx-sdk-11/lib/
. Cela fait, vous remarquerez que les classes JavaFX sont maintenant reconnues dans l'éditeur.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
Courir
Maven
Si vous utilisez Maven pour générer votre projet, procédez comme suit:
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.
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
).
Remplacez les plugins Maven par défaut par ceux de ici .
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:
JavaFX 11 sans Maven/Gradle, voir exemple non modulaire ou exemple modulaire projets.
JavaFX 11 avec Maven, voir exemple non modulaire ou exemple modulaire projets.
JavaFX 11 avec Gradle, voir exemple non modulaire ou exemple modulaire projets.
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!
module thisIsTheNameOfYourProject {
requires javafx.fxml;
requires javafx.controls;
requires javafx.graphics;
opens sample;
}
La chose entière m'a pris seulement 5 minutes !!!
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):
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.
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