Intellij IDEA 为 java fx 工件生成 html y jnlp

Intellij IDEA generating html y jnlp for java fx artifact

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

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

it generates a .html and a .jnlp file?, are those two necessary for the application to work

部署所需的文件取决于您的应用程序 execution mode

  1. 如果您的应用程序嵌入在浏览器中(例如像传统的 Java 小程序一样通过 Java 插件执行),那么您需要所有 .html.jnlp.jar 个文件。
  2. 如果您的应用程序是使用 Java deployment toolkit 通过 Webstart 从浏览器启动的,那么您需要所有 .html.jnlp.jar 文件。
  3. 如果您的应用程序是通过 Webstart 从网页通过直接 href link 到 jnlp 文件启动的,那么您只需要 .jnlp.jar 文件。
  4. 如果您的应用程序作为 "standalone program"(例如 "Users launch it using a Java launcher, such as java -jar MyApp.jar, or by double-clicking the application JAR file.")分发,那么您只需要 .jar 文件。
  5. 如果您的应用程序作为 "self-contained" 应用程序分发,那么您需要 .jnlp.html.jar 文件中的 none 个,因为一切都需要运行 您的应用程序将被打包到您将分发的本机安装包(例如 .rpm.msi.deb.dmg)。

建议的方法

由于您将使用 "standalone program" 形式的分发,因此您只需要 .jar 文件进行分发,可以忽略由 Java 打包工具创建的其他文件。

虽然您可以通过选择 Build | Build Artifacts | Edit... | + | JAR | From modules with dependencies... 让 Idea 将您的应用程序打包为 JAR,但我不建议这样做,因为您还需要在清单中设置一个 main class 并且会丢失使用 Idea 的 "JavaFX Application" 打包类型打包的文件的一些功能,例如内置检测 Java 运行 用于启动应用程序的时间满足 [=91] 的最低要求=] JavaFX 应用程序和透明网络代理支持。

因此,只需不变地使用您已经设置的 Idea 工件打包配置。忽略 .html 文件和 .jnlp 文件输出。只需将 .jar 文件连同有关如何通过 java -jar MyApp.jar 或在 Java 运行 时间后双击 .jar 启动它的说明一起分发给您的用户已经安装在他们的机器上。

便携式构建建议

如果只有你在开发项目,并且不熟悉外部构建工具,如 maven 或 gradle,那么使用你的想法中内置的工件打包功能(可能)更简单 IDE 而不是学习和使用外部工具。

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