Loading fxml in maven generated jar
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have problems loading my fxml files when starting my Project from jar (jar was generated with maven). Igore the System.outs theyre only for quick Debugging purposes.
I use the following code (this code is called from the class TabPaneTest):
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TabPaneView.fxml"));
This is the initialize Method of the corresponding Controller:
@FXML
public void initialize()
this.tabPane1.setTabClosingPolicy(TabClosingPolicy.ALL_TABS);
this.loginTab.setClosable(false);
this.loginTab.setText("Login");
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
//Funktionierende jar
//FXMLLoader fxmlLoader = new FXMLLoader(new URL("rsrc:resources/de/statistik_nord/klr/view/EingabeView.fxml"));
//System.out.println(getClass().getClassLoader().getResourceAsStream("resources/de/statistik_nord/klr/view/EingabeView.fxml"));
fxmlLoader.setController(new ConnectController());
Parent root = null;
//Parent root = FXMLLoader.load(getClass().getResource("view/ConnectView.fxml"));
try
root = (Parent) fxmlLoader.load(); //This is TabPaneController.java:52, which is mentioned in the stacktrace
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
this.loginTab.setContent(root);
dbc.bind(((ConnectController) fxmlLoader.getController()).getDbcProperty());
this.dbc.addListener(new ChangeListener<DBConnection>()
@Override
public void changed(ObservableValue<? extends DBConnection> observable, DBConnection oldValue, DBConnection newValue)
// TODO Auto-generated method stub
if(newValue != null)
System.out.println(dbc + "new");
ec = new EingabeController(dbc.getValue());
changeExistingTab(loginTab, "Eingabe", "../view/EingabeView.fxml", ec, (ActionEvent e) ->
if (e.getTarget() instanceof Button)
switch(((Button) e.getTarget()).getId())
case "buttonUebersKTR":
openNewTab(new Tab(), "Uebersicht Kostentraeger", "../view/Übersicht_KTRView.fxml", new Uebersicht_KTRController(dbc.getValue(), ec.getChosenPersonal()));
break;
case "buttonPersonalKTR":
openNewTab(new Tab(), "Personalübersicht für: ", "../view/Personal_KTR_UebersView.fxml", new Personal_KTR_UebersController(dbc.getValue(), ec.getChosenKTR()));
break;
case "buttonUnvollstaendig":
openNewTab(new Tab(), "Unvollstaendig", "../view/UnvollstaendigView.fxml", new UnvollstaendigController(dbc.getValue()));
break;
case "buttonLogOut":
dbc.removeListener(this);
tabPane1.getTabs().removeIf(tab -> !(tab.getText().equals("Eingabe")));
initialize();
System.out.println(dbc + "case");
break;
else
System.out.println("Event!!!!");
);
);
And the Directorys inside the jar look like this:
jar directories
jar directories 2
I get the following error:
Caused by javafx.fxml.LoadException: File:/....../[...].jar!/de/statistik_nord/klr/TabPaneView.fxml
I also print the path and get this (when exetung the jar):
System.out.println(getClass().getResource("TabPaneView.fxml"));
jar:file:/...../[...].jar!/de/statistik_nord_klr/TabPaneView.fxml
Starting the program from eclipse works just fine and has basically the same packaging:
eclipse directories
edit:
Stacktrace:
/* This is sys.out.print output I do myself
TEEEEEEEEEEEEST
jar:file:/C:/Users/WollscPh/eclipse- workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/view/TabPaneView.fxml
TEEEEEEEEEEEEST
*/
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs (LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException:
file:/C:/Users/WollscPh/eclipse-workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/TabPaneView.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.TabPaneTest.start(TabPaneTest.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
... 12 more
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.controller.TabPaneController.initialize(TabPaneController.java:52)
... 22 more
Exception running application de.statistik_nord.klr.TabPaneTest
the fxml file (TabPaneView, loaded in TabPaneTest.java, the main class):
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
</center>
<center>
<TabPane fx:id="tabPane1" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab fx:id="loginTab" text="Untitled Tab 1" />
</tabs>
</TabPane>
</center>
</BorderPane>
The fxml file (ConnectView, which is the second loaded fxml and loaded from the initialize method of TabPaneController)
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<left>
<TextField id="text1" fx:id="textField1" prefHeight="48.0" prefWidth="149.0" promptText="User" BorderPane.alignment="CENTER" />
</left>
<right>
<TextField id="text2" fx:id="textField2" prefHeight="48.0" prefWidth="149.0" promptText="Passwort" BorderPane.alignment="CENTER" />
</right>
<center>
<Button fx:id="button1" mnemonicParsing="false" text="LogIn" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
Just in case Ill include the corresponding Controller for the ConnectView too, although theres not really anything Happening:
@FXML
public void initialize()
// TODO Auto-generated method stub
button1.setOnAction(new EventHandler<ActionEvent>()
public void handle(ActionEvent event)
dbc.set(new DBConnection(textField1.getText(), textField2.getText()));
);
maven javafx jar fxml
add a comment |
I have problems loading my fxml files when starting my Project from jar (jar was generated with maven). Igore the System.outs theyre only for quick Debugging purposes.
I use the following code (this code is called from the class TabPaneTest):
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TabPaneView.fxml"));
This is the initialize Method of the corresponding Controller:
@FXML
public void initialize()
this.tabPane1.setTabClosingPolicy(TabClosingPolicy.ALL_TABS);
this.loginTab.setClosable(false);
this.loginTab.setText("Login");
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
//Funktionierende jar
//FXMLLoader fxmlLoader = new FXMLLoader(new URL("rsrc:resources/de/statistik_nord/klr/view/EingabeView.fxml"));
//System.out.println(getClass().getClassLoader().getResourceAsStream("resources/de/statistik_nord/klr/view/EingabeView.fxml"));
fxmlLoader.setController(new ConnectController());
Parent root = null;
//Parent root = FXMLLoader.load(getClass().getResource("view/ConnectView.fxml"));
try
root = (Parent) fxmlLoader.load(); //This is TabPaneController.java:52, which is mentioned in the stacktrace
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
this.loginTab.setContent(root);
dbc.bind(((ConnectController) fxmlLoader.getController()).getDbcProperty());
this.dbc.addListener(new ChangeListener<DBConnection>()
@Override
public void changed(ObservableValue<? extends DBConnection> observable, DBConnection oldValue, DBConnection newValue)
// TODO Auto-generated method stub
if(newValue != null)
System.out.println(dbc + "new");
ec = new EingabeController(dbc.getValue());
changeExistingTab(loginTab, "Eingabe", "../view/EingabeView.fxml", ec, (ActionEvent e) ->
if (e.getTarget() instanceof Button)
switch(((Button) e.getTarget()).getId())
case "buttonUebersKTR":
openNewTab(new Tab(), "Uebersicht Kostentraeger", "../view/Übersicht_KTRView.fxml", new Uebersicht_KTRController(dbc.getValue(), ec.getChosenPersonal()));
break;
case "buttonPersonalKTR":
openNewTab(new Tab(), "Personalübersicht für: ", "../view/Personal_KTR_UebersView.fxml", new Personal_KTR_UebersController(dbc.getValue(), ec.getChosenKTR()));
break;
case "buttonUnvollstaendig":
openNewTab(new Tab(), "Unvollstaendig", "../view/UnvollstaendigView.fxml", new UnvollstaendigController(dbc.getValue()));
break;
case "buttonLogOut":
dbc.removeListener(this);
tabPane1.getTabs().removeIf(tab -> !(tab.getText().equals("Eingabe")));
initialize();
System.out.println(dbc + "case");
break;
else
System.out.println("Event!!!!");
);
);
And the Directorys inside the jar look like this:
jar directories
jar directories 2
I get the following error:
Caused by javafx.fxml.LoadException: File:/....../[...].jar!/de/statistik_nord/klr/TabPaneView.fxml
I also print the path and get this (when exetung the jar):
System.out.println(getClass().getResource("TabPaneView.fxml"));
jar:file:/...../[...].jar!/de/statistik_nord_klr/TabPaneView.fxml
Starting the program from eclipse works just fine and has basically the same packaging:
eclipse directories
edit:
Stacktrace:
/* This is sys.out.print output I do myself
TEEEEEEEEEEEEST
jar:file:/C:/Users/WollscPh/eclipse- workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/view/TabPaneView.fxml
TEEEEEEEEEEEEST
*/
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs (LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException:
file:/C:/Users/WollscPh/eclipse-workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/TabPaneView.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.TabPaneTest.start(TabPaneTest.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
... 12 more
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.controller.TabPaneController.initialize(TabPaneController.java:52)
... 22 more
Exception running application de.statistik_nord.klr.TabPaneTest
the fxml file (TabPaneView, loaded in TabPaneTest.java, the main class):
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
</center>
<center>
<TabPane fx:id="tabPane1" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab fx:id="loginTab" text="Untitled Tab 1" />
</tabs>
</TabPane>
</center>
</BorderPane>
The fxml file (ConnectView, which is the second loaded fxml and loaded from the initialize method of TabPaneController)
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<left>
<TextField id="text1" fx:id="textField1" prefHeight="48.0" prefWidth="149.0" promptText="User" BorderPane.alignment="CENTER" />
</left>
<right>
<TextField id="text2" fx:id="textField2" prefHeight="48.0" prefWidth="149.0" promptText="Passwort" BorderPane.alignment="CENTER" />
</right>
<center>
<Button fx:id="button1" mnemonicParsing="false" text="LogIn" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
Just in case Ill include the corresponding Controller for the ConnectView too, although theres not really anything Happening:
@FXML
public void initialize()
// TODO Auto-generated method stub
button1.setOnAction(new EventHandler<ActionEvent>()
public void handle(ActionEvent event)
dbc.set(new DBConnection(textField1.getText(), textField2.getText()));
);
maven javafx jar fxml
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates thatTabPaneController
'sinitialize
method is used to load a fxml, so maybe the source of the issue was another load call.
– fabian
Nov 15 '18 at 16:22
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50
add a comment |
I have problems loading my fxml files when starting my Project from jar (jar was generated with maven). Igore the System.outs theyre only for quick Debugging purposes.
I use the following code (this code is called from the class TabPaneTest):
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TabPaneView.fxml"));
This is the initialize Method of the corresponding Controller:
@FXML
public void initialize()
this.tabPane1.setTabClosingPolicy(TabClosingPolicy.ALL_TABS);
this.loginTab.setClosable(false);
this.loginTab.setText("Login");
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
//Funktionierende jar
//FXMLLoader fxmlLoader = new FXMLLoader(new URL("rsrc:resources/de/statistik_nord/klr/view/EingabeView.fxml"));
//System.out.println(getClass().getClassLoader().getResourceAsStream("resources/de/statistik_nord/klr/view/EingabeView.fxml"));
fxmlLoader.setController(new ConnectController());
Parent root = null;
//Parent root = FXMLLoader.load(getClass().getResource("view/ConnectView.fxml"));
try
root = (Parent) fxmlLoader.load(); //This is TabPaneController.java:52, which is mentioned in the stacktrace
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
this.loginTab.setContent(root);
dbc.bind(((ConnectController) fxmlLoader.getController()).getDbcProperty());
this.dbc.addListener(new ChangeListener<DBConnection>()
@Override
public void changed(ObservableValue<? extends DBConnection> observable, DBConnection oldValue, DBConnection newValue)
// TODO Auto-generated method stub
if(newValue != null)
System.out.println(dbc + "new");
ec = new EingabeController(dbc.getValue());
changeExistingTab(loginTab, "Eingabe", "../view/EingabeView.fxml", ec, (ActionEvent e) ->
if (e.getTarget() instanceof Button)
switch(((Button) e.getTarget()).getId())
case "buttonUebersKTR":
openNewTab(new Tab(), "Uebersicht Kostentraeger", "../view/Übersicht_KTRView.fxml", new Uebersicht_KTRController(dbc.getValue(), ec.getChosenPersonal()));
break;
case "buttonPersonalKTR":
openNewTab(new Tab(), "Personalübersicht für: ", "../view/Personal_KTR_UebersView.fxml", new Personal_KTR_UebersController(dbc.getValue(), ec.getChosenKTR()));
break;
case "buttonUnvollstaendig":
openNewTab(new Tab(), "Unvollstaendig", "../view/UnvollstaendigView.fxml", new UnvollstaendigController(dbc.getValue()));
break;
case "buttonLogOut":
dbc.removeListener(this);
tabPane1.getTabs().removeIf(tab -> !(tab.getText().equals("Eingabe")));
initialize();
System.out.println(dbc + "case");
break;
else
System.out.println("Event!!!!");
);
);
And the Directorys inside the jar look like this:
jar directories
jar directories 2
I get the following error:
Caused by javafx.fxml.LoadException: File:/....../[...].jar!/de/statistik_nord/klr/TabPaneView.fxml
I also print the path and get this (when exetung the jar):
System.out.println(getClass().getResource("TabPaneView.fxml"));
jar:file:/...../[...].jar!/de/statistik_nord_klr/TabPaneView.fxml
Starting the program from eclipse works just fine and has basically the same packaging:
eclipse directories
edit:
Stacktrace:
/* This is sys.out.print output I do myself
TEEEEEEEEEEEEST
jar:file:/C:/Users/WollscPh/eclipse- workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/view/TabPaneView.fxml
TEEEEEEEEEEEEST
*/
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs (LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException:
file:/C:/Users/WollscPh/eclipse-workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/TabPaneView.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.TabPaneTest.start(TabPaneTest.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
... 12 more
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.controller.TabPaneController.initialize(TabPaneController.java:52)
... 22 more
Exception running application de.statistik_nord.klr.TabPaneTest
the fxml file (TabPaneView, loaded in TabPaneTest.java, the main class):
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
</center>
<center>
<TabPane fx:id="tabPane1" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab fx:id="loginTab" text="Untitled Tab 1" />
</tabs>
</TabPane>
</center>
</BorderPane>
The fxml file (ConnectView, which is the second loaded fxml and loaded from the initialize method of TabPaneController)
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<left>
<TextField id="text1" fx:id="textField1" prefHeight="48.0" prefWidth="149.0" promptText="User" BorderPane.alignment="CENTER" />
</left>
<right>
<TextField id="text2" fx:id="textField2" prefHeight="48.0" prefWidth="149.0" promptText="Passwort" BorderPane.alignment="CENTER" />
</right>
<center>
<Button fx:id="button1" mnemonicParsing="false" text="LogIn" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
Just in case Ill include the corresponding Controller for the ConnectView too, although theres not really anything Happening:
@FXML
public void initialize()
// TODO Auto-generated method stub
button1.setOnAction(new EventHandler<ActionEvent>()
public void handle(ActionEvent event)
dbc.set(new DBConnection(textField1.getText(), textField2.getText()));
);
maven javafx jar fxml
I have problems loading my fxml files when starting my Project from jar (jar was generated with maven). Igore the System.outs theyre only for quick Debugging purposes.
I use the following code (this code is called from the class TabPaneTest):
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TabPaneView.fxml"));
This is the initialize Method of the corresponding Controller:
@FXML
public void initialize()
this.tabPane1.setTabClosingPolicy(TabClosingPolicy.ALL_TABS);
this.loginTab.setClosable(false);
this.loginTab.setText("Login");
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
//Funktionierende jar
//FXMLLoader fxmlLoader = new FXMLLoader(new URL("rsrc:resources/de/statistik_nord/klr/view/EingabeView.fxml"));
//System.out.println(getClass().getClassLoader().getResourceAsStream("resources/de/statistik_nord/klr/view/EingabeView.fxml"));
fxmlLoader.setController(new ConnectController());
Parent root = null;
//Parent root = FXMLLoader.load(getClass().getResource("view/ConnectView.fxml"));
try
root = (Parent) fxmlLoader.load(); //This is TabPaneController.java:52, which is mentioned in the stacktrace
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
this.loginTab.setContent(root);
dbc.bind(((ConnectController) fxmlLoader.getController()).getDbcProperty());
this.dbc.addListener(new ChangeListener<DBConnection>()
@Override
public void changed(ObservableValue<? extends DBConnection> observable, DBConnection oldValue, DBConnection newValue)
// TODO Auto-generated method stub
if(newValue != null)
System.out.println(dbc + "new");
ec = new EingabeController(dbc.getValue());
changeExistingTab(loginTab, "Eingabe", "../view/EingabeView.fxml", ec, (ActionEvent e) ->
if (e.getTarget() instanceof Button)
switch(((Button) e.getTarget()).getId())
case "buttonUebersKTR":
openNewTab(new Tab(), "Uebersicht Kostentraeger", "../view/Übersicht_KTRView.fxml", new Uebersicht_KTRController(dbc.getValue(), ec.getChosenPersonal()));
break;
case "buttonPersonalKTR":
openNewTab(new Tab(), "Personalübersicht für: ", "../view/Personal_KTR_UebersView.fxml", new Personal_KTR_UebersController(dbc.getValue(), ec.getChosenKTR()));
break;
case "buttonUnvollstaendig":
openNewTab(new Tab(), "Unvollstaendig", "../view/UnvollstaendigView.fxml", new UnvollstaendigController(dbc.getValue()));
break;
case "buttonLogOut":
dbc.removeListener(this);
tabPane1.getTabs().removeIf(tab -> !(tab.getText().equals("Eingabe")));
initialize();
System.out.println(dbc + "case");
break;
else
System.out.println("Event!!!!");
);
);
And the Directorys inside the jar look like this:
jar directories
jar directories 2
I get the following error:
Caused by javafx.fxml.LoadException: File:/....../[...].jar!/de/statistik_nord/klr/TabPaneView.fxml
I also print the path and get this (when exetung the jar):
System.out.println(getClass().getResource("TabPaneView.fxml"));
jar:file:/...../[...].jar!/de/statistik_nord_klr/TabPaneView.fxml
Starting the program from eclipse works just fine and has basically the same packaging:
eclipse directories
edit:
Stacktrace:
/* This is sys.out.print output I do myself
TEEEEEEEEEEEEST
jar:file:/C:/Users/WollscPh/eclipse- workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/view/TabPaneView.fxml
TEEEEEEEEEEEEST
*/
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs (LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException:
file:/C:/Users/WollscPh/eclipse-workspace/klr_fx_test/target/klr_fx_test-0.0.1-SNAPSHOT.jar!/de/statistik_nord/klr/TabPaneView.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.TabPaneTest.start(TabPaneTest.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
... 12 more
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at de.statistik_nord.klr.controller.TabPaneController.initialize(TabPaneController.java:52)
... 22 more
Exception running application de.statistik_nord.klr.TabPaneTest
the fxml file (TabPaneView, loaded in TabPaneTest.java, the main class):
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
</center>
<center>
<TabPane fx:id="tabPane1" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab fx:id="loginTab" text="Untitled Tab 1" />
</tabs>
</TabPane>
</center>
</BorderPane>
The fxml file (ConnectView, which is the second loaded fxml and loaded from the initialize method of TabPaneController)
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<left>
<TextField id="text1" fx:id="textField1" prefHeight="48.0" prefWidth="149.0" promptText="User" BorderPane.alignment="CENTER" />
</left>
<right>
<TextField id="text2" fx:id="textField2" prefHeight="48.0" prefWidth="149.0" promptText="Passwort" BorderPane.alignment="CENTER" />
</right>
<center>
<Button fx:id="button1" mnemonicParsing="false" text="LogIn" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
Just in case Ill include the corresponding Controller for the ConnectView too, although theres not really anything Happening:
@FXML
public void initialize()
// TODO Auto-generated method stub
button1.setOnAction(new EventHandler<ActionEvent>()
public void handle(ActionEvent event)
dbc.set(new DBConnection(textField1.getText(), textField2.getText()));
);
maven javafx jar fxml
maven javafx jar fxml
edited Nov 18 '18 at 22:40
goldarm5
asked Nov 15 '18 at 15:52
goldarm5goldarm5
14
14
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates thatTabPaneController
'sinitialize
method is used to load a fxml, so maybe the source of the issue was another load call.
– fabian
Nov 15 '18 at 16:22
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50
add a comment |
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates thatTabPaneController
'sinitialize
method is used to load a fxml, so maybe the source of the issue was another load call.
– fabian
Nov 15 '18 at 16:22
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates that
TabPaneController
's initialize
method is used to load a fxml, so maybe the source of the issue was another load call.– fabian
Nov 15 '18 at 16:22
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates that
TabPaneController
's initialize
method is used to load a fxml, so maybe the source of the issue was another load call.– fabian
Nov 15 '18 at 16:22
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50
add a comment |
1 Answer
1
active
oldest
votes
The mistake was using .. in the relative path I used:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
This exists in the normal filesystem, but not in the jar, which explains why it worked if I started it from eclipse but not when I started it from the executable jar.
The solution to this is the following:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("de/statistik_nord/klr/view/ConnectView.fxml"));
For reference the path to ConnectView.fxml is this:
MyJarName.jar/de/statistik_nord/klar/view/ConnectView.fxml.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53323162%2floading-fxml-in-maven-generated-jar%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The mistake was using .. in the relative path I used:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
This exists in the normal filesystem, but not in the jar, which explains why it worked if I started it from eclipse but not when I started it from the executable jar.
The solution to this is the following:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("de/statistik_nord/klr/view/ConnectView.fxml"));
For reference the path to ConnectView.fxml is this:
MyJarName.jar/de/statistik_nord/klar/view/ConnectView.fxml.
add a comment |
The mistake was using .. in the relative path I used:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
This exists in the normal filesystem, but not in the jar, which explains why it worked if I started it from eclipse but not when I started it from the executable jar.
The solution to this is the following:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("de/statistik_nord/klr/view/ConnectView.fxml"));
For reference the path to ConnectView.fxml is this:
MyJarName.jar/de/statistik_nord/klar/view/ConnectView.fxml.
add a comment |
The mistake was using .. in the relative path I used:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
This exists in the normal filesystem, but not in the jar, which explains why it worked if I started it from eclipse but not when I started it from the executable jar.
The solution to this is the following:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("de/statistik_nord/klr/view/ConnectView.fxml"));
For reference the path to ConnectView.fxml is this:
MyJarName.jar/de/statistik_nord/klar/view/ConnectView.fxml.
The mistake was using .. in the relative path I used:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/ConnectView.fxml"));
This exists in the normal filesystem, but not in the jar, which explains why it worked if I started it from eclipse but not when I started it from the executable jar.
The solution to this is the following:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("de/statistik_nord/klr/view/ConnectView.fxml"));
For reference the path to ConnectView.fxml is this:
MyJarName.jar/de/statistik_nord/klar/view/ConnectView.fxml.
answered Nov 19 '18 at 8:56
goldarm5goldarm5
14
14
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53323162%2floading-fxml-in-maven-generated-jar%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Could you provide the complete stacktrace and possibly relevant parts of the fxml. It looks like this is not an issue with finding the resource, but an error that happens while processing the fxml.
– fabian
Nov 15 '18 at 15:56
Will do that, but the stacktrace is in an only restricted resizable Windows cmd so it might look a bit messy. About processing the fxml, shouldnt that occur in eclipse too then? Because I can load it from eclipse I only get a warning: "WARNING: Loading FXML document with JavaFX API of version 8.0.171 by JavaFX runtime of version 8.0.111" or might this be the issue?
– goldarm5
Nov 15 '18 at 16:00
You could write the output to a text file, see stackoverflow.com/questions/1420965/… . BTW: did you check, if the code you posted is the source of the issue. The stacktrace indicates that
TabPaneController
'sinitialize
method is used to load a fxml, so maybe the source of the issue was another load call.– fabian
Nov 15 '18 at 16:22
The TabPaneController is used to load all the tabs and loads the “start“ tab in its initialize method, which is also working perfectly fine in eclipse. I will take a look at it and edit tommorow.
– goldarm5
Nov 15 '18 at 16:53
I included the second fxm, both controlers initialize methods and the stacktrace in a codeblock. As you pointed out there is an error with loading the second fxml. The TabPaneController which tries to load the ConnectView.fxml is in the Controller directory/package (look at jar directories imgur link) and the ConnectView.fxml isin the view Directory/package. @fabian
– goldarm5
Nov 18 '18 at 22:50