JavaFX Emplacement n'est pas définie message d'erreur
J'ai un problème lorsque vous essayez de fermer la scène actuelle et d'ouvrir une autre scène quand menuItem est sélectionné. Ma scène principale est codé en tant que ci-dessous:
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("cartHomePage.fxml"));
Pane myPane = (Pane) myLoader.load();
CartHomePageUI controller = (CartHomePageUI) myLoader.getController();
controller.setPrevStage(primaryStage);
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
Lorsque le programme est exécuté, il va aller à la cartHomePage.fxml. À partir de là, je peux choisir d'aller pour créer le produit ou créer une catégorie lorsque l'élément de menu est sélectionné. Voici mon action d'événement:
Stage prevStage;
public void setPrevStage(Stage stage){
this.prevStage = stage;
}
public void gotoCreateCategory(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("createCategory.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
//Method to change scene when menu item create product is on click
@FXML
public void gotoCreateProduct(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("creatProduct.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
Cependant, je ne peux basculer sur scène. Par exemple, ma page par défaut est cartHomePage.fxml. Quand je lance le programme, j'ai d'abord aller à créer un produit de la scène. Après cela, je ne peux pas aller n'importe où n'importe plus. Le message d'erreur est:
java.lang.IllegalStateException: Location is not set.
and Null Pointer Exception
Je n'ai mis de la scène, après je le fermer et de le passer autour. Je me demande quelle partie s'est mal passé.
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème et trouvé ce post. Ma question était juste un nom de fichier en question.
J'ai un xml que c'est tout et j'ai fait en sorte que ma classe est le même que le fichier fxml moins le mot contrôleur.
J'ai foiré la sous-chaîne si le chemin était mauvais...bien sûr après j'ai corrigé le nom de fichier qu'il a travaillé.
Pour faire une longue histoire courte, je pense que le problème est soit un nom de fichier est nommé de façon inappropriée ou le chemin d'accès est incorrect.
OUTRE:
Depuis, j'ai déménagé à un Projet Maven. Le non Maven façon est d'avoir tout à l'intérieur de votre chemin de projet. Le Maven manière qui a été énumérées dans la réponse ci-dessous a été un peu frustrant au début, mais j'ai fait une modification de mon code comme suit:
Je recevais cette exception et la "solution" que j'ai trouvé était par le biais de l'EDI Netbeans, il suffit de:
Je ne sais pas POURQUOI cela a fonctionné, mais il l'a fait!
Project -> Clean...
et cela a fonctionné quand j'ai appuyé sur exécuter.J'ai converti un simple NetBeans 8 Java FXML application pour le Maven-piloté par un. Puis j'ai eu des problèmes, parce que le
getResource()
méthodes n'étaient pas en mesure de trouver la .fxml fichiers. Dans la mine d'origine de l'application de la fxmls ont été dispersés à travers le paquet d'arbres de chaque côté de son contrôleur de fichier de classe.Après j'ai fait Nettoyer et créer dans NetBeans, j'ai vérifié le résultat .jar dans le dossier cible - le .jar ne contiennent pas de fxml à tous. Tous les fxmls ont étrangement disparu.
Puis j'ai mis tous les fxmls dans les ressources/fxml dossier et définir les paramètres de la méthode getResource en conséquence, par exemple:
FXMLLoader(App.class.getClassLoader().getResource("fxml/ObjOverview.fxml"));
Dans ce cas, tout est OK. Le fxml dossier paru int .pot de racine et il contenait tous mes fxmls. Le programme fonctionnait comme prévu.
getClassLoader()
il est important de spécifier la racine de barre oblique inverse sur le chemin commeFXMLLoader(App.class.getResource("/fxml/ObjOverview.fxml"));
resources/fxml/ObjOverview.fxml
resources
doivent être à l'intérieursrc
dossier? Savez-vous si cela doit fonctionner dans Eclipse ainsi?Je sais que c'est une réponse tardive, mais j'espère que d'aider quelqu'un d'autre qui a ce problème. J'avais la même erreur, et a constaté que j'avais pour insérer un
/
en face de mon chemin d'accès au fichier. Le corrigé appel de fonction serait alors:J'ai essayé un rapide et simple chose:
J'ai deux paquets ->
app.gui
etapp.login
Dans ma classe de connexion j'utilise le
mainview.fxml
deapp.gui
j'ai donc fait cela dans lelogin.fxml
Et ça fonctionne 🙂
..
ne va pas résoudre lejar:
protocole ne prend pas en charge la..
répertoire parent de localisation.dans mon cas, j'ai juste enlever ..
C'est souvent de ne pas obtenir l'emplacement du chemin d'accès correct. Il est important de réaliser que le chemin commence le package en cours dont le code réside dans la et non pas la racine du projet. Tant que vous obtenez ce chemin d'accès relatif correcte, vous devriez être en mesure d'orienter clairement de cette erreur dans ce cas.
Je pense que le problème est soit la mise en page incorrecte nom ou invalide mise en page du fichier chemin d'accès.
pour IntelliJ, vous pouvez créer un annuaire de ressources et lieu de mise en page des fichiers.
J'ai eu le même problème dans mon JavaFX Application. Encore plus bizarre: mon Windows environnement de développement tout a bien fonctionné avec le fxml chargeur. Mais quand j'ai exécuté exactement le même code sur ma Debian maschine, j'ai eu des erreurs similaires à "location non défini".
J'ai lu toutes les réponses ici, mais aucun ne semble vraiment "résoudre" le problème. Ma solution a été facile et j'espère que cela aidera certains d'entre vous:
Peut-être Java se confond, par le getClass() méthode. Si quelque chose fonctionne dans différents threads ou votre classe implémente les interfaces, il peut venir à l'essentiel, qu'une classe différente que la vôtre est retourné par la méthode getClass (). Dans ce cas, votre chemin d'accès relatif à creatProduct.fxml va être mauvais, parce que votre "" ne sont pas dans le chemin que vous pensez que vous êtes...
Donc, pour être sur le enregistrer côté: Être plus précis et essayez utiliser la classe statique champ sur votre Classe (Note le YourClassHere.class).
Après avoir réalisé cela, j'ai TOUJOURS fais comme ça. Espérons que ça aide!
La réponse ci-dessous par CsPeitch et d'autres, est sur la bonne voie. Assurez-vous que le fxml fichier est copié sur votre sortie de classe de la cible, ou le moteur d'exécution ne sera pas le voir. Vérifiez le fichier de classe générée répertoire et voir si le fxml est-il
Pour Intellij utilisateurs, mon problème a été que le répertoire où j'ai eu mon fxml fichiers (src/main/resources), n'a pas marqué en tant que "Ressources" du répertoire.
Ouvrir le module de projet/paramètres accédez à l'onglet sources et de s'assurer que Intellij sait que le répertoire contient les ressources de projet fichiers.
Je veux dire quelque chose comme ceci:
Après que
Essayez-le et laissez-moi savoir s'il vous plaît.
Qui s'est passé pour moi j'ai trouvé la solution. Si u construire votre projet avec votre .fxml des fichiers dans différents packages à partir de la classe qui a le lancement de la ligne de
(
Parent root = FXMLLoader.load(getClass().getResource("filenamehere.fxml"));
)et utiliser un chemin relatif de votre windows, à l'exception de la première coutume de lancement lors de votre course le pot. Le garder court place de la .fichier fxml dans le même paquet avec la classe qui le lance et définir le chemin d'accès comme ceci ("filenamehere.fxml") et il devrait fonctionner correctement.
J'ai eu le même problème.
après quelques minutes, j'ai pensé que ce que j'ai essayé de le charger le fichier.fxml de mauvais emplacement.
Je suis tombé sur le même problème. Le programme était en cours d'exécution sont parfaits, de Eclipse via le bouton "Exécuter", mais PAS de runnable JAR que j'avais exporté avant.
Ma solution a été:
1) Déplacer Principal classe de package par défaut
2) Définir un autre chemin pour Eclipse, et d'autres lors de l'exécution du fichier JAR
(les coller dans Main.java)
Et après que, dans commencer méthode, vous devez charger les fichiers comme ceci:
Il travaille pour moi dans Eclipse Mars avec e(fx)clipse plugin.
le mien était étrange... IntelliJ spécifiques caprice.
J'ai regardé ma sortie des classes et il y a un dossier:
x.y.z
au lieu de
x/y/z
mais si vous avez certaines options définies dans IntelliJ, dans le navigateur, ils seront à la fois ressembler à x.y.z
afin de vérifier votre dossier de sortie si vous êtes rayer votre tête
Location not set
gagne mon vote pour la plupart inutiles description de l'exception jamais. Je suppose que le JavaFX développeurs jamais entendu parler de%s
?J'ai eu le même problème. C'est un simple problème de ne pas préciser le droit chemin.
Clic droit sur la sur votre
.fxml
fichier et sélectionnez propriétés (pour ceux qui utilisent eclipse ne diffèrent que beaucoup pour un autre IDE) et ensuite copier la copie de l'emplacement de départ de/packagename
jusqu'à la fin et cela devrait résoudre le problème