Intellij IDEA 为java fx神器生成html y jnlp

问题描述 投票:0回答:1

为什么当我使用 Intellij IDEA 为 javafx 应用程序生成工件时,除了 .jar 之外,它还会生成 .html 和 .jnlp 文件?,这两个文件是应用程序工作所必需的,如果不是,是否有设置我可以更改以便不再创建这些吗?

intellij-idea javafx
1个回答
2
投票

2025 年更新

当前的 Idea JavaFX Artifact 选项卡(截至 2025 年初)已过时,并且不适用于现代 Java 发行版。 它是为早期的 JavaFX 版本构建的,例如最初嵌入 Oracle JDK 8 中的版本,该版本依赖于 JavaFX ant 任务和一个名为

javafxpackager
的工具,该工具已不再可用。

当您尝试将 Idea JavaFX Artifact 与现代 Java/JavaFX 发行版(例如 23.x)一起使用时,它将输出:

Java FX Packager: Can't build artifact - fx:deploy is not available in this JDK 

JavaFXPackager 的替代品是 jpackage 工具。 据我所知,目前Idea不提供使用jpackage工具的直接工件支持。 该工具可以直接从命令行或 shell 脚本使用,也可以通过 maven 和 gradle 的构建工具插件使用。 jpackage 工具不会为打包的工件生成 HTML 和 JNLP 代码,因为这种部署依赖于 Java Webstart 技术,而该技术不再是 OpenJDK 项目的一部分。


原答案

各种 JavaFX 执行模式所需的文件

它生成一个 .html 和一个 .jnlp 文件?,这两个文件是应用程序工作所必需的吗

部署所需的文件取决于应用程序的执行模式

  1. 如果您的应用程序嵌入在浏览器中(例如,像传统 Java 小程序一样通过 Java 插件执行),则您需要所有
    .html
    .jnlp
    .jar
    文件。
  2. 如果您的应用程序是使用 Java 部署工具包通过 Webstart 从浏览器启动的,那么您需要所有
    .html
    .jnlp
    .jar
    文件。
  3. 如果您的应用程序是通过 Webstart 从网页通过指向 jnlp 文件的直接 href 链接启动的,那么您只需要
    .jnlp
    .jar
    文件。
  4. 如果您的应用程序作为“独立程序”分发(例如“用户使用 Java 启动器启动它,例如
    java -jar MyApp.jar
    ,或通过双击应用程序 JAR 文件来启动它。”),那么您只需要
    .jar
    文件。
  5. 如果您的应用程序作为“独立”应用程序分发,那么您不需要任何
    .jnlp
    .html
    .jar
    文件,因为运行应用程序所需的所有内容都将打包到本机安装包中(例如
    .rpm
    .msi
    .deb
    .dmg
    )您将分发。

建议的方法

由于您将使用“独立程序”形式进行分发,因此您只需要

.jar
文件进行分发,并且可以忽略 Java 打包工具创建的其他文件。

虽然您可以通过选择

Build | Build Artifacts | Edit... | + | JAR | From modules with dependencies...
让 Idea 将您的应用程序打包为 JAR,但我不建议这样做,因为您还需要在清单中设置主类,并且会丢失使用打包的文件的一些功能Idea 的“JavaFX 应用程序”打包类型,例如用于启动应用程序的 Java 运行时是否满足运行 JavaFX 应用程序的最低要求的内置检测以及透明网络代理支持。

因此,只需使用您已经设置的 Idea 工件打包配置,无需更改。 忽略

.html
文件和
.jnlp
文件输出。 只需将
.jar
文件分发给您的用户,并附上有关如何通过
java -jar MyApp.jar
或在计算机上安装 Java 运行时后双击
.jar
启动该文件的说明。

便携式构建建议

如果只有您自己开发项目,并且您不熟悉 maven 或 gradle 等外部构建工具,那么使用 Idea IDE 内置的工件打包功能(可能)比学习和使用外部工具更简单。

如果您的项目可能由其他开发人员处理,或者要在 Jenkins 等持续集成系统中生成和测试构建,我不建议依赖 IDE 特定的构建系统,例如 Idea 中的工件打包器。 相反,请使用外部构建工具,例如 Maven 或 gradle。 有一个用于 JavaFX 构建的 maven 插件gradle 插件

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.