JavaFX - Launch4j 中的 Derby 错误缺少组件

问题描述

我正在使用 intellij idea 制作一个 javafx 库管理系统项目,该项目使用 derby 作为嵌入式数据库,它工作得很好,但是当我使用 intellij idea 中的 build artefact 选项将我的项目转换为 jar 文件时,然后转换使用 launch4j 将该 jar 文件转换为 .exe 文件并尝试运行它,它会抛出一个

缺少 JavaFX 运行时组件,需要运行此组件 申请

enter image description here

我尝试通过 launch4j 中的 jvm 选项部分添加 jvm 选项,但随后我会收到另一个错误提示我无法访问包含我想使用的其他类的子包:-

enter image description here

问题是我希望这个程序在我运行 .exe 文件时运行,所以有没有办法在我的代码添加这些 jvm 选项,或者有没有更好的方法来运行具有不同扩展名的 javafx-db 程序?我应该如何将我使用的子包包含在 jvm 选项中?

解决方法

解决这个问题花了我一些时间,首先你需要将 DERBY_PATH 和 PATH_TO_FX 设置为你的库,然后你需要在 JVM 选项中添加这些命令

--module-path %DERBY_HOME%;%PATH_TO_FX% --add-modules javafx.controls,javafx.fxml,java.sql,java.desktop,javafx.swing,javafx.graphics

构建这将在每次运行程序时运行的 xml 文件中添加选项