Le code java qui charge les fichiers fxml est le suivant :
L'arborescence dans quartztouchoutils.jar, pour ce qui nous concerne est :
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 // Déclaration des variables locales FXMLLoader fxmlLoader = new FXMLLoader(); Node nodeRoot = null; try { // Utiliser un chemin de ressource complet String cheminFichierFXML = "resources/fxml/" + nomFichierFXML; // Charger le fichier FXML en tant que ressource URL urlFichierFXML = JfxOutils.class.getClassLoader().getResource(cheminFichierFXML); if (urlFichierFXML == null) { throw new IllegalStateException("Fichier FXML non trouvé : " + cheminFichierFXML); } // Définir l'emplacement de la ressource - Configurer le FXMLLoader avec l'URL de la ressource fxmlLoader.setLocation(urlFichierFXML); System.out.println("PHS, Chargement de : " + nomFichierFXML); // Charger le FXML à partir du flux // nodeRoot = fxmlLoader.load(inputstream); nodeRoot = fxmlLoader.load(); System.out.println("PHS, Chargement réussi de : " + nomFichierFXML); } catch (IOException e) { throw new IllegalStateException("Impossible de charger le fichier FXML : "+nomFichierFXML, e); }
quartztouchoutils.jar\resources\fxml\
Ce répertoire contient lui même les fichiers :
importationdonneesdunsiteqt.fxml
et
quartztouchoutils.fxml
Dans le pom.xml de mon projet java quartztouchoutils, j'ai bien :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <resources> <resource> <directory>src/main/resources</directory> <!-- Les ressources sont copiés dans le repertoire resources du JAR --> <targetPath>resources</targetPath> <includes> <!-- Inclut tous les fichiers et répertoires --> <include>**/*</include> </includes> </resource> </resources>
Je lance mon application de la façon suivante, dans un invite de commande DOS :
java -jar quartztouchoutils.jar
J'ai rajouté des traces dans mon code java.
J'ai la log suivante, après execussion du jar :
Lors du chargement du 1er fichier xml :
"
PHS, Chargement de : quartztouchoutils.fxml
PHS, Chargement réussi de : quartztouchoutils.fxml
"
Il n'y a pas de problème.
C'est au moment de la recherche de chargement du 2éme fichier xml :
"
PHS, Chargement de : importationdonneesdunsiteqt.fxml
"
Que l'erreur se produit :
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Caused by: java.lang.IllegalStateException: Impossible de charger le fichier FXML : importationdonneesdunsiteqt.fxml at com.{mon_entreprise}.quartztouchoutils.outils.JfxOutils.chargementFichierFxml(JfxOutils.java:51) at com.{mon_entreprise}.quartztouchoutils.interfacegraphique.ecrans.controller.QuartztouchOutilsController.allerSurImportationDonneesDunSiteQT(QuartztouchOutilsController.java:41) ... 53 more Caused by: javafx.fxml.LoadException: file:/C:/Quartztouch_Outils/QuartztouchOutils_java/quartztouchoutils.jar!/resources/fxml/importationdonneesdunsiteqt.fxml:12
Dans mon fichier importationdonneesdunsiteqt.fxml, j'ai la clause :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part <fx:include source="quartztouchoutils.fxml" />
Le problème se situe dans le fichier importationdonneesdunsiteqt.fxml qui inclus le fichier quartztouchoutils.fxml via la balise <fx:include source="quartztouchoutils.fxml" />, il n'arrive pas à cahrger ce 2éme fichier : quartztouchoutils.fxml
Dans Intellij, ça fonctionne très bien, c'est lors de l'execussion en mode ligne de commande avec le fichier quartztouchoutils.jar que le problème se pose.
Auriez vous une solution à me proposer ?
Partager