FXML zu Laden Ausnahme
Hab ich ein problem, dass ich absolut nicht lösen kann, auf meine eigene, denn ich habe gerade erst begonnen mit JAVA FX.
Ich bekomme eine böse javafx.fxml.LoadException: , aber ich habe genau das gemacht, wie eine Anleitung, aber ich kann nicht meinen Main zu laufen.
Dies ist die Ausnahme-Ausgang:
apr 07, 2014 4:06:37 EM application.Main start
ALLVARLIG: null
javafx.fxml.LoadException:
/C:/Users/Jakob/Dropbox/java_kurser/Project%20Timeline/bin/application/LoginGUI.fxml
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at application.Main.start(Main.java:21)
at com.sun.javafx.application.LauncherImpl$8.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$7.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$6$1.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$6$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(Unknown Source)
at com.sun.glass.ui.win.WinApplication$4$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,6]
Message: Bearbetningsinstruktionens målmatchning "[xX][mM][lL]" är inte tillåten.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
at javax.xml.stream.util.StreamReaderDelegate.next(Unknown Source)
... 20 more
LoginController.java
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
public class LoginController implements Initializable {
@FXML //ResourceBundle that was given to the FXMLLoader
private ResourceBundle resources;
@FXML //URL location of the FXML file that was given to the FXMLLoader
private URL location;
@FXML //fx:id="loginButton"
private Button loginButton; //Value injected by FXMLLoader
@FXML //fx:id="newUserButton"
private Button newUserButton; //Value injected by FXMLLoader
@FXML //fx:id="passwordField"
private PasswordField passwordField; //Value injected by FXMLLoader
@FXML //fx:id="usernameField"
private TextField usernameField; //Value injected by FXMLLoader
public void initialize(URL location, ResourceBundle resources) {
assert loginButton != null : "fx:id=\"loginButton\" was not injected: check your FXML file 'LoginGUI.fxml'.";
assert newUserButton != null : "fx:id=\"newUserButton\" was not injected: check your FXML file 'LoginGUI.fxml'.";
assert passwordField != null : "fx:id=\"passwordField\" was not injected: check your FXML file 'LoginGUI.fxml'.";
assert usernameField != null : "fx:id=\"usernameField\" was not injected: check your FXML file 'LoginGUI.fxml'.";
//The button event for the login button
loginButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
System.out.println("This button works");
}
});
}
}
LoginGUI.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>
<?scenebuilder-background-color 0x008effff?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="LoginController">
<children>
<Button fx:id="loginButton" cancelButton="false" contentDisplay="CENTER" defaultButton="true" layoutX="254.0" layoutY="263.0" mnemonicParsing="false" opacity="1.0" prefHeight="28.0" prefWidth="92.0" text="Login" underline="false">
<font>
<Font size="14.0" fx:id="x1" />
</font>
</Button>
<PasswordField fx:id="passwordField" layoutX="241.0" layoutY="206.0" prefHeight="23.000099999997474" prefWidth="118.0" promptText="Password" />
<TextField fx:id="usernameField" layoutX="241.0" layoutY="166.0" prefHeight="23.0" prefWidth="118.0" promptText="Username" />
<Label layoutX="248.0" layoutY="98.0" prefHeight="35.000099999997474" prefWidth="105.0" text="Welcome">
<font>
<Font size="22.0" />
</font>
</Label>
<Button id="loginButton" fx:id="newUserButton" cancelButton="false" contentDisplay="CENTER" defaultButton="true" font="$x1" layoutX="254.0" layoutY="313.0" mnemonicParsing="false" opacity="1.0" prefHeight="28.0" prefWidth="92.0" text="New User" underline="false" />
</children>
</AnchorPane>
und Main.java
package application;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
Application.launch(Main.class, (java.lang.String[])null);
}
@Override
public void start(Stage primaryStage) {
try {
AnchorPane root = (AnchorPane) FXMLLoader.load(Main.class.getResource("LoginGUI.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("Bluerift Timeline");
primaryStage.show();
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
- Bitte übersetzen: Bearbetningsinstruktionens målmatchning "[xX][mM][lL]" är inte tillåten.
- Die Verarbeitungshinweise Ziel überein........ ist nicht erlaubt. Und am Anfang: ALLVARLIG: null = SCHWERWIEGEND : null
- Nicht sicher, dies ist das problem, sondern die main-Methode ist ungewöhnlich. Sie können nur tun
launch(args);
. Was auch immer Sie tun, obwohl, übergeben einen null-Verweis für das args-array ist eine ziemlich schlechte Idee.Application.launch(Main.class, new String[0]);
wäre viel sicherer, wenn man wollte (aus irgendeinem Grund) zu zwingen es zu ignorieren, Befehl Linie Argumente. - Ach Sie sind ein Engel 😉 Danke. Ich schrieb, als Sie vorschlug, mit new String[0] und jetzt ist es gestartet! 😀 😀 nochmals vielen Dank 😀 Jetzt weiß ich, das ist sicher und hoffentlich wird das nicht wieder den gleichen Fehler.
- Ah Verdammt Java fx. Ich hasse es heute 🙁 Nun es ist das gleiche problem wie vorher, aber ich habe es genau wie ich, hatte es gestern, als es funktionierte. Ich weiß nicht, was ich tun werde. werfen mein computer vielleicht
- überprüfen Sie Ihre IDE-Einstellungen und versuchen, das Projekt neu erstellen, löschen Sie die Produktions-Dateien etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das problem bei der Quelle
Also, Sie haben zu ändern, um eine richtige
So tun, Bearbeiten Sie die Quelle der fxml-Datei hier
mit diesem
Erlebte ich dieses Problem auch. Ich fand, dass ich nicht fügen Sie den package-Namen der controller-Namen in der FXML-Datei; ursprünglich habe ich nur Hinzugefügt die Controller-Klasse name.
Zum Beispiel: wenn meine controller-Klasse ist unter
com.stackoverflow.gui
- Paket und den Namen meiner controller-KlasseLoginController
. Der FXML-Datei solltecom.stackoverflow.gui.LoginController
und nicht nurLoginController
Ich hatte das gleiche problem heute und für diejenigen, die es haben und die (wie ich) sind auf der Suche für eine Antwort:
Können Sie geändert haben jede Komponente Id auf dem Controller-Datei und vergessen, Sie zu aktualisieren der Id auf sceneBuilder (oder FXML-Datei)[oder Umgekehrt], so dass der Controller kann keine Verbindung der Komponenten auf View-Datei.
Zum Beispiel:
(Auf Controller-Datei)
(Auf FXML-Datei oder SceneBuilder)
🙂