[英]Jpackage doesn't work perfectly with JDBC dependency
我制作了一个使用 JavaFX 和 JDBC 作为依赖项的简单程序,我使用 jpackage 将它打包到一个可安装的文件中,没有任何困难,但是当我尝试启动我的程序时,它给了我以下错误:
"Missing JavaFX application class com.example.mvnwithjdbcnotused.HelloApplication"
PS:该程序在 IDE 和 CMD 中运行良好(运行“.jar”文件而不是安装的文件),只是产生该错误的 resulted.exe 文件。 我尝试制作相同的程序,但没有调用或使用 mysql 数据库,它工作正常,所以我认为问题与依赖项(即 MySQL JDBC)或我使用 Jpackage 工具的方式有关
我遵循的步骤来创建 installable.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 不是。
你应该用更多的细节来编辑你的问题,当我靠近我的电脑时会更新这个答案。
为了使 jpackaged exe 运行 JavaFX 和 JDBC,您的 jpackage 应用程序必须包含所有相关的 jar 或模块。 一种方法是使用 jlink 将依赖模块收集为一个图像。 Jpackage 隐式执行此操作,或者您可以看到此答案。 如果它们是模块化的,请在 jlink 命令中包含 jdbc 驱动程序。 测试您自己的应用程序是否与 jlink 创建的 JRE 兼容。
然后在 jpackage 中使用这个 jlink 图像。
还必须使用--input
将其他 jar 依赖项复制到映像中。 使用附加类路径 jars、属性文件等设置jpackage.image
文件夹,这些文件可以在cfg
文件中用作$APPDIR
这不会像您尝试这样做的方式那样工作,因为这样 jpackage 无法处理非模块化依赖项。 您必须分别使用 jlink 和 jpackage。 详情在这里描述: https://github.com/dlemmermann/JPackageScriptFX
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.