JAVAFX: Behandeln des Fehlers „Speicherort ist nicht festgelegt“ beim Packen mit JAR
Ihr Code läuft reibungslos in Eclipse, aber wenn er als verpackt ist JAR und über cmd ausgeführt wird, tritt der Fehler „Speicherort ist nicht festgelegt“ auf. Dieses Problem entsteht, weil die Methode getClass().getResource(...) eine Ressource und keinen direkten Dateipfad erwartet.
In Java werden Ressourcen mithilfe einer Hierarchie gültiger Java-Identifikatoren definiert, die durch Schrägstriche (/) getrennt sind. ) und einen Ressourcennamen (shortname.extension). Beim Laden von Klassen aus dem Dateisystem entspricht dies einem Dateipfad. Wenn Sie jedoch andere Klassenlademechanismen verwenden, ist es wichtig, diese Spezifikationen einzuhalten.
Beheben des Fehlers
Um das Problem zu beheben, ersetzen Sie Ihren aktuellen Code durch den folgenden :
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));
Alternativer Ansatz: Controller-Standort
Da sich Ihre FXML- und Controller-Dateien im selben Paket befinden, können Sie Controller-Standorte zum Laden von FXML nutzen:
FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));
Diese Methode ist robuster und vereinfacht zukünftiges Refactoring, da der Compiler den Paketnamen automatisch überprüft. Darüber hinaus können alle Änderungen an der Paketstruktur nahtlos von Eclipse verarbeitet werden.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Speicherort ist nicht festgelegt' beim Packen von JavaFX-Anwendungen mit JARS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!