【问题标题】:Deploying a NetBeans application with JavaFX使用 JavaFX 部署 NetBeans 应用程序
【发布时间】:2021-02-25 22:47:06
【问题描述】:

我正在尝试在 NetBeans 中构建一个可以部署给最终用户的应用程序。我对部署项目还是很陌生,这是迄今为止我做过的最复杂的一个,所以请多多包涵。我目前在 NetBeans 中有一个使用 JDK 15 和 JavaFX 15 的工作应用程序。只要我在 NetBeans 中运行,一切都按预期工作。我已经到了要确保我可以在 NetBeans 之外分发这个应用程序的地步。为此我做了一些搜索,找到了以下教程。

https://netbeans.org/kb/articles/javase-deploy.html

我能够按照教程构建示例。该构建在 NetBeans 中运行,我可以从命令行运行 dist 文件夹中的可执行 jar 文件,并且可以通过从文件资源管理器中执行 jar 文件来运行它。现在,当我尝试对自己的项目执行相同的过程时,我遇到了以下错误。

  1. 当我尝试运行 dist 文件夹中的 jar 文件时,绝对没有任何反应。
  2. 当我尝试使用命令从命令行运行 jar 文件时

java -jar "C:\Workspace\HandyAndyVersion1_2\dist\HandyAndyVersion1_2.jar"

我收到以下错误,

错误:JavaFX 运行时组件丢失,是运行此应用程序所必需的。

我目前假设第一个问题是第二个问题的副产品。如果有人对此问题有解决方案或对我可能配置错误有任何想法,请告诉我并提前谢谢大家。

【问题讨论】:

    标签: java javafx netbeans


    【解决方案1】:

    如今,要打包 Java 桌面应用程序,您应该使用 jpackage 工具和可选的 jlink 工具。这些将生成一个 JRE 映像,该映像与应用程序一起打包并包含您需要的模块。

    我怀疑您遇到的问题是 JavaFX 的本机库不存在。 JDK 15 的大多数发行版不包含 JavaFX 模块,但有些包含。 (请参阅来自AzulBellsoft 的JDK 的完整和FX 包)。我发现使用捆绑了 JavaFX 的 JDK 更容易,而不是在开发 JavaFX 的 jmod 文件期间必须管理单独的模块路径,但这是另一种选择。任何一种方法都可以与 jlink 一起使用,为包含 JavaFX 模块的应用程序创建合适的 JRE。

    【讨论】:

    • 感谢您提供的信息,我会研究这些工具,但这并不能真正回答我的问题。我知道这些模块不存在于 JDK 15 中,这就是为什么我将 JavaFX 安装到当前在 netbeans 中引用的库中。没有这个,我的应用程序将无法在 IDE 本身中运行。我的困惑是为什么我可以在 IDE 中运行应用程序,但不能在 IDE 之外运行应用程序。 IDE 在内部做了哪些其他地方没有做的事情?
    • 您没有提供足够的信息。这是一个基于 Ant 的项目(不推荐)还是基于 Maven(更好)或基于 Gradle(也更好)?你的 Jar 清单是什么样的?使用了哪些库,它们位于何处? NetBeans 可能会以不同方式设置模块路径或类路径,或者将其他参数传递给 JVM,例如用于加载本机库的文件夹。
    猜你喜欢
    • 2014-11-17
    • 2021-02-22
    • 2023-04-07
    • 2018-05-18
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多