2

我有一个使用 JavaFX 2 的 Eclipse 项目。FXML 文件是使用 Scene Builder 生成的。我的目标是创建一个可运行的 Jar。无论我尝试哪种方式,在运行 jar 文件时,我总是会收到 JavAFX 启动器错误“运行应用程序时出现异常”/。堆栈跟踪如下。

如果我使用 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
4

2 回答 2

4

问题是代码中的相对路径。在引用图像或 FXML 文件时,我会使用相对路径。这在直接从 Eclipse 运行时工作正常,但不能作为可运行的 jar 工作。将路径更改为绝对解决了问题。

编辑:对于任何偶然发现此错误并使用 Scene Builder 制作 FXML 文件的人,请注意,我必须使用文本编辑器从 Scene Builder 编辑生成的 FXML 文件,以将相对路径转换为绝对路径。

于 2013-01-10T18:37:32.617 回答
1

如果您可以使用 maven ,请按照 本教程创建可执行的 jar、exe .. 等。

适用于 JavaFX 的 Maven 插件:使用此插件可以更轻松地快速启动和运行以及构建复杂的分发包(例如可执行 JAR 文件、本机安装程序和 webstart 包)。

于 2013-01-04T01:10:32.797 回答