当前位置: 首页 > 知识库问答 >
问题:

JavaFX通过Exe4J打包为EXE后运行失败

祁星阑
2023-03-14

我用JavaFX构建的项目在编译器中运行良好,但当我将其打包为EXe可执行文件时,它出错了。运行打包的EXE程序时提示的错误消息如下:

java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: Location is not set.
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2459)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
    at cn.ambit.app.App.start(App.java:40)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    ... 1 more

发生错误的函数:

 @Override
    public void start(Stage initStage) throws Exception {
        FXMLLoader initFXMLLoader = new FXMLLoader(App.class.getResource("/view/initializationStage.fxml"));
        AnchorPane anchorPane = initFXMLLoader.load();  // line 40
        Scene scene = new Scene(anchorPane);
        JMetroThemeManager.setSceneStyle(scene);
        initStage.setScene(scene);
        initStage.setResizable(false);
        initStage.titleProperty().bind(I18N.createStringBinding("title"));
        initStage.show();
    }

从错误提示中,似乎FXML文件未能读取,但奇怪的是,我在其他项目中使用了相同的方法来读取FXML文件,当打包成EXE可执行文件时,它工作正常,对此我感到困惑。

共有1个答案

暨嘉
2023-03-14

我不知道为什么,但我后来创建了另一个JavaFX控制器类,从旧控制器类中复制方法并删除旧控制器类,问题就解决了。

 类似资料:
  • 问题内容: 我正在通过Java程序执行exe。该路径是用Java硬编码的。 我已经把我的exe包装在罐子里。 但是由于我在Java文件中硬编码了路径名而感到困惑,因此我无法将jar作为独立程序执行。 是否有任何包装此类jar的提示,即内部具有exe并能够作为独立程序运行? 问题答案: 这会将提取.exe到本地磁盘上的本地文件。当Java程序存在时,该文件将被删除。

  • 本文向大家介绍使用winrar打包air程序为exe(包含air运行环境),包括了使用winrar打包air程序为exe(包含air运行环境)的使用技巧和注意事项,需要的朋友参考一下 Adobe AIR安装率实在太低了。所以很必要对你的air程序进行打包。那个Shu我是没用过,广告打得很猛,但是完全可以用winrar就达到打包air的目的。 1.准备好你需要打包的文件。去你的flex sdk的bi

  • 我已经创建了一个JavaFX应用程序,并使用蚂蚁创建了它的本机包。当我试图启动应用程序使用Jar从捆绑创建双击,它成功启动我的应用程序。但是当我试图双击MyApplication.exe(比如说)时,它会抛出JavaFX启动器错误“运行应用程序时异常”。 我比较了两个jre,有很多丢失的jar,exe,dll和一些属性文件我发现。 我有这些环境设置- JAVA_HOME和JREFX_HOME在我的

  • exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏里以你的进程名取代java.exe的出现,那么exe4j可以完成这个工作。exe4j帮助你以一种安全的方式启动你的 java应用程序,来显示本地启动画面,检测及发布合适

  • 我正在尝试创建一个JavaFX应用程序,但是我找不到一种方法将JavaFX jar文件捆绑在Launch4J创建的EXE文件中。有办法做到这一点吗? 到目前为止,我所拥有的是一个EXE和OpenJFX14和OpenJDK14的发行版,它们位于同一个文件夹中,并具有OpenJFX文档所规定的JRE路径和VM选项。 我使用OpenJDK14.0.1和Open JavaFX14.0.2。

  • 19.2 作为打包程序运行 如果您使用Spring Boot的Maven或Gradle插件来创建可执行的jar,则可以使用java -jar来运行程序。例如: $ java -jar target/myproject-0.0.1-SNAPSHOT.jar 也可以在远程调试支持被启用下运行打包程序。这允许您将调试器附加到打包程序上: