J'ai des problèmes avec JavaFX. Je voulais commencer à créer des applications, de bureau ou mobiles, au moins quelque chose. J'ai donc découvert que je pouvais utiliser la bibliothèque JavaFX pour cela. Mais pour autant que je sache, il a été exclu de JDK 9. J'utilise actuellement OpenJDK 11 sur Ubuntu 18 (bien qu'Eclipse écrit que j'ai l'environnement JavaSE 10, c'est là que je suis aussi un peu confus) et j'ai installé OpenJFX. en utilisant Sudo apt install openjfx
et je ne peux pas faire fonctionner Eclipse avec JavaFX.
Je ne sais pas s'il est logique de ne pas utiliser JDK 8 avec le JavaFX fourni, mais comment puis-je utiliser JavaFX dans de telles conditions dans Eclipse?
Il y a plusieurs points dans votre message qui nécessitent une clarification. Je vais essayer d'y répondre dans différents points:
Mais si j'ai bien compris, il (JavaFX) a été exclu de JDK 9.
JavaFX sera découplé du JDK Oracle à partir du JDK 11. J'insiste sur le JDK Oracle car JavaFX n'a jamais fait partie d'OpenJDK. Pas même dans OpenJDK 8.
J'utilise actuellement OpenJDK 11 sur Ubuntu 18 (bien qu'Eclipse écrive que j'ai l'environnement JavaSE 10, c'est là que je suis aussi un peu confus)
Pour le support de Java 11 dans Eclipse, vous devez installer le plugin plug-in de Java 11 pour Eclipse Photon .
Voici quelques exemples Exemples d'utilisation de Java 11 dans Eclipse
J'ai installé openjfx en utilisant
Sudo apt install openjfx
et je ne peux pas faire fonctionner Eclipse avec JavaFX.Je ne sais pas s'il est logique de ne pas utiliser JDK 8 avec JavaFX inclus, mais de toute façon, comment utiliser JavaFX dans de telles conditions avec Eclipse?
Etant donné qu'OpenJDK 11 ou Oracle JDK 11 ne sera pas fourni avec JavaFX, le mieux est de télécharger le SDK JavaFX à partir de ici ou ici et de les charger dans votre IDE.
Si vous avez l'habitude de créer des outils, vous pouvez directement utiliser les fichiers JAR d'exécution JavaFX disponibles dans Maven Central .
Pour un tutoriel sur l'exécution de JavaFX 11 sur OpenJDK 11, vous pouvez suivre:
Au moment de la rédaction de cet article, vous avez besoin de Eclipse 4.9M pour utiliser JavaFX 11.
Une fois que vous avez Eclipse, JDK 11 et JavaFX 11 SDK, vous pouvez choisir de créer:
module-info.Java
Champs obligatoires)Projet basé sur un module
Créez un projet Java et ajoutez des fichiers jar JavaFX à partir du Java FX 11 SDK au chemin de module du projet.
Créer un module.info
et déclarer sa dépendance de javafx.controls
module. javafx11
est le nom du paquet contenant votre fichier Java.
module javafx11 {
requires javafx.controls;
exports javafx11;
}
Lancer le programme\o /
Projet non basé sur un module
Créez un projet Java et ajoutez des fichiers jar JavaFX à partir du Java SDK FX 11) à soit le chemin du module ou le chemin de classe de le projet.
Ajoutez les arguments JVM suivants à la configuration d'exécution du projet:
--module-path=path-to-javafx-skd/lib --add-modules=javafx.controls
Lancer le programme\o /
Pour vous familiariser plus facilement avec JavaFX, utilisez la version de Java 8 de marque Oracle, où JavaFX 8 est fourni et facilement disponible.
Pour plus de détails techniques, voir Utilisation de JavaFX dans JRE 8 . Recherchez les sections liées et associées de la page Web pour connaître les nombreuses publications associées.
La plate-forme Java est en train de procéder à une reformulation radicale, connue sous le nom de modularisation .
Auparavant, Java SE (édition standard) était un grand monolithe de logiciels, qui ne cessait de prendre de l'ampleur et que de plus en plus d'ajoutés. Aucune application ne l'utilise jamais.
Une décision a été prise de diviser Java SE en plusieurs fragments distincts, qui seront définis de manière formelle en tant que "modules". L'un des principaux avantages est qu'une application peut être associée à un environnement d'exécution Java SE composé uniquement des modules réellement nécessaires, sans les modules inutilisés. Voir l'outil jlink .
En tant que sous-produit de cette modularisation, certaines parties plus anciennes et moins populaires telles que [~ # ~] corba [~ # ~] sont en cours de suppression, pour ne plus être portées en tant que partie standard de Java (bien qu’elle soit proposée aux autres parties si elles en décident ainsi). De même, certains Java EE modules seront supprimés de Java SE et transférés au projet Jakarta EE , logiquement une maison plus appropriée. Voir JEP 320: Supprimez les modules Java EE et CORBA .
Le processus de modularisation et de réorganisation est un effort continu qui dure depuis des années. Beaucoup a été fait dans Java 9 et Java 10. Certaines étapes finales sont en cours d'exécution dans Java 11.
L'une des mesures prises dans Java 11 consiste à cesser de regrouper JavaFX avec Java SE. Voir:
Il est donc plus facile de démarrer avec le développement JavaFX dès maintenant avec Java 8. Les bibliothèques JavaFX sont regroupées avec Java 8. Et vous n'avez pas besoin d'apprendre davantage sur la modularisation, ni de maîtriser votre IDE (comme Eclipse) et les paramètres du projet pour reconnaître les modules. Si vous n'avez pas un besoin urgent d'utiliser les toutes dernières versions de Java ou JavaFX, restez avec 8 jusqu'à ce que le processus de modularisation et les outils soient lissés, probablement l'année prochaine, en 2019.
Si vous insistez pour utiliser Java 11, vous devez en savoir plus sur:
Ces points sont trop nombreux pour être abordés ici et ont été abordés dans de nombreuses autres Questions sur le dépassement de capacité. En outre, Java 11 n'a pas encore été officiellement publié.
Peut-être que cet article vous aidera, Comment créer un projet avec JavaFX sur JDK 11 .
Pour en savoir plus sur la modularisation de Java, lisez le blog et le livre, Le système de modules Java , par Nicolai Parlog.
J'ai eu du mal à résoudre ce problème sur environ 20 ordinateurs, alors j'ai dressé la liste de contrôle suivante:
[ ] download javafx11 from javafx11's website, put on desktop
[ ] create a MODULE based project
[ ] right click project, go to BUILD PATH
[ ] add the downloaded javafx.base/control/graphics as external jar files
[ ] put the files in a package (eg: my_big_package)
[ ] put the following in the module.Java file:
module javafx11 {
requires javafx.controls;
exports my_big_package;
}
[ ] eat a donut from the break room
Si vous n'êtes pas marié à Eclipse et/ou que vous ne faites qu'essayer d'apprendre (ou êtes étudiant avec un professeur/assistant peu utile), BlueJ intègre déjà JavaFX et est prêt à fonctionner. Aucune installation ni aucun téléchargement supplémentaire n'est nécessaire. Soigné!