J'ai suivi un tutoriel avec précision et je n'arrive pas à le faire fonctionner. Le didacticiel se trouve sous JavaFX and Intellij
Non-modular from IDE
sections: https://openjfx.io/openjfx-docs/#install-Java
Voici le message d'erreur que je reçois lorsque j'essaie d'exécuter le projet Intellij Idea JavaFX par défaut:
"C:\Program Files\Java\jdk-11.0.1\bin\Java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.Zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
Java.lang.module.FindException: Module javafx.base not found
Process finished with exit code 1
Cela n'a pas de sens pour moi, comme je peux le voir javafx.base
sous lib
dans la barre latérale:
Le chemin menant à jdk-11.0.1
et javafx-sdk-11.0.1
:
C:\Program Files\Java
Java est installé:
C:\Users\jonat>Java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
Java_HOME
la variable (mentionnée dans le guide) est définie:
C:\Users\jonat>echo %Java_HOME%
C:\Program Files\Java\jdk-11.0.1
PATH_TO_FX
la variable est définie:
C:\Users\jonat>echo %PATH_TO_FX%
C:\Program Files\Java\javafx-sdk-11.0.1\lib
Je ne sais vraiment pas où aller d'ici. J'ai suivi le tutoriel avec précision et cela ne fonctionne pas. Toute aide serait grandement appréciée et si vous avez besoin de plus d'informations, veuillez simplement laisser un commentaire à ce sujet.
Sur la base de la ligne de commande publiée, voici ce qu'IntelliJ applique pour exécuter votre projet:
"C:\Program Files\Java\jdk-11.0.1\bin\Java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml
Le problème est donc assez clair: dans les options VM vous avez défini verbatim ce que le tutoriel dit:
Mais vous n'avez pas appliqué votre vrai chemin pour PATH_TO_FX
, comme il est suggéré dans l'image insérée après cette commande dans le tutoriel:
IntelliJ ne résout pas cette variable et le chemin du module n'est pas défini, vous obtenez donc l'erreur attendue qui révèle que les modules JavaFX ne sont pas trouvés:
Error occurred during initialization of boot layer
Java.lang.module.FindException: Module javafx.controls not found
Solution
Cela peut être résolu de deux manières:
Modifiez les configurations d'exécution et dans les options VM ajoutez votre chemin:
--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml
Appliquez et exécutez. Ça devrait marcher.
Vous pouvez également définir une variable d'environnement. Aller à IntelliJ->File->Settings->Appearance & Behavior->Path Variables
, et ajouter PATH_TO_FX
, avec le chemin d'accès au dossier lib
:
Et puis vous pouvez utiliser les littéraux $PATH_TO_FX$
ou ${PATH_TO_FX}
dans les options VM:
--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml
Appliquez et exécutez.
Notez qu'il s'agit d'une solution plus permanente qui peut s'appliquer à tout autre projet JavaFX.