我有一个使用JavaFX 2的Eclipse项目.FXML文件是使用Scene Builder生成的。我的目标是创建一个可运行的Jar。无论我尝试了哪种方式,我总是在运行jar文件时得到JavAFX Launcher Error“运行Application时出现异常”/。堆栈跟踪在下面。
如果我使用JavaFX ant任务或javafxpackager实用程序,结果相同。
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.javafx.main.Main.launchApp(Main.java:642)
at com.javafx.main.Main.main(Main.java:805)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at controllers.Main.start(Unknown Source)
at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
... 1 more
答案 0 :(得分:4)
问题是代码中的相对路径。在引用图像或FXML文件时,我会使用相对路径。这在直接从Eclipse运行时工作正常,但不能作为可运行的jar工作。将路径更改为绝对可以解决问题。
编辑:对于任何绊倒此错误并使用Scene Builder制作FXML文件的人,请注意我必须使用文本编辑器从Scene Builder编辑生成的FXML文件,以将相对路径转换为绝对路径。
答案 1 :(得分:1)
如果你可以使用maven,那么按照this tutorial创建可执行jar,exe ..等等。
JavaFX的Maven插件:使用这个插件,它更容易 快速启动并运行并构建复杂的分发 捆绑包(例如可执行JAR文件,本机安装程序和webstart 束)。