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
我制作了一个使用 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