Jpackage 不能与 JDBC 依赖项完美配合

Jpackage doesn't work perfectly with JDBC dependency

我制作了一个使用 JavaFX 和 JDBC 作为依赖项的简单程序,我使用 jpackage 将它打包到一个可安装的文件中,没有任何困难,但是当我尝试启动我的程序时,它给了我以下错误:

"Missing JavaFX application class com.example.mvnwithjdbcnotused.HelloApplication"

PS:程序在 IDE 中 运行 正常,也可以使用 CMD(运行“.jar”文件而不是安装文件) ,它只是导致该错误的结果 .exe 文件。 我试图制作相同的程序,但没有调用或使用 mysql 数据库,它工作正常,所以我认为问题与依赖项(即 MySQL JDBC)或我使用 Jpackage 工具的方式

创建可安装 .exe 所遵循的步骤

1-i 使用 Intellij 的工件打包了我的文件(包括所有使用的依赖项)

2-我使用 jpackage 工具如下:

jpackage --name "name of the file" --description "description" --vendor "vendor" --app-version 1.0 --input "the file that has the .jar created by the first step" --main-jar "name of the jar"--dest "destination file " --module-path "path to javafx jmods files " --add-modules javafx.controls,javafx.fxml --win-console

3-安装文件

4-运行 程序

如果问题出自我遵循的步骤或依赖项或工具,我真的很困惑

我最后想提的是我的项目是模块化的,但 MySQL JDBC 不是。

你应该用更多的细节来编辑你的问题,当我靠近我的电脑时会更新这个答案。

为了使用 JDBC 将 jpackaged exe 转换为 运行 JavaFX,您的 jpackage 应用程序必须包含所有依赖的 jar 或模块。一种方法是使用 jlink 将依赖模块收集为一个图像。 Jpackage 隐式执行此操作,或者您可以看到此答案。如果它们是模块化的,则在 jlink 命令中包含 jdbc 驱动程序。测试您自己的应用程序是否与 jlink 创建的 JRE 兼容。

how can I get javafx 14 to compile and run?

然后在jpackage中使用这个jlink镜像。

How can I convert my Java program to an .exe file?

还必须使用 --input 将其他 jar 依赖项复制到映像中。使用额外的类路径 jar、属性 文件等设置一个 jpackage.image 文件夹,这些文件可以在 cfg 文件中用作 $APPDIR

这不会像您尝试的那样工作,因为这种方式 jpackage 无法处理非模块化依赖项。您必须分别使用 jlink 和 jpackage。此处描述了详细信息:https://github.com/dlemmermann/JPackageScriptFX