Maison >Java >javaDidacticiel >Comment résoudre l'erreur « L'emplacement n'est pas défini » dans JavaFX lors de l'exécution à partir d'un JAR ?

Comment résoudre l'erreur « L'emplacement n'est pas défini » dans JavaFX lors de l'exécution à partir d'un JAR ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 20:57:02390parcourir

How to Resolve the

Résolution d'erreur d'emplacement JavaFX non défini

Lorsque vous essayez d'exécuter un projet JavaFX via la ligne de commande après avoir créé un fichier JAR, vous pouvez rencontrer un Erreur « L'emplacement n'est pas défini ». Ce problème survient lors de l'utilisation correcte de getClass().getResource() dans le contexte du chargement et de la localisation des ressources.

La méthode getClass().getResource() est destinée à charger des ressources et non à spécifier un chemin de fichier. Bien que cela puisse sembler fonctionner dans l'IDE en raison du chargeur de classe qui le résout à partir du système de fichiers, cela peut échouer lors de l'utilisation du chargeur de classe JAR, qui n'implémente pas la résolution des ressources de la même manière.

Solution 1 : Utiliser le chemin de ressource absolu

Pour résoudre le problème, spécifiez le chemin de ressource absolu du fichier FXML à l'aide du séparateur / :

<code class="java">FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));</code>

Solution 2 : Utiliser Emplacements des contrôleurs

Vous pouvez également exploiter l'organisation de votre code et charger le fichier FXML par rapport à son contrôleur :

<code class="java">FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));</code>

Cette approche s'aligne sur l'empaquetage structuré de vos contrôleurs et de FXML. fichiers et simplifie la refactorisation en mettant automatiquement à jour les instructions d'importation lors du déplacement de FXML et des contrôleurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn