【问题标题】:How to build a executable JavaFX 11 application如何构建可执行的 JavaFX 11 应用程序
【发布时间】:2021-09-15 00:47:15
【问题描述】:

问题

我无法在 IntelliJ IDEA 上创建“JavaFX 应用程序”工件,它 给出“‘javafx:deploy’未在此 SDK 中实现。”错误。

我不想使用 Maven/Gradle,因为; 使用 Maven:我不能使用我的本地 jar 库,我尝试将其包含为 lib,使用 Jitpack,在 POM 中添加一些东西,但它们都不起作用。 使用 Gradle:我不了解 Gradle,但我认为它与 maven(本地库)有同样的问题。 所以我需要一个没有 Maven/Gradle 的解决方案。

详情

我尝试创建“JAR 应用程序”工件并构建它,但它不能通过双击或控制台命令运行。我确定我正确安装并配置了 JavaFX & jmods。

我想要什么

构建一个 JavaFX 可执行文件,无需控制台命令即可运行。

系统属性

  • 操作系统:Windows 10 21H1
  • IDE:IntelliJ IDEA Ultimate 2021.1.3
  • JDK 和 JavaFX SDK 版本:11
  • 我使用 FXML 和 Scene Builder(嵌入到 IDE 中)
  • 项目有多个类和场景。

【问题讨论】:

  • 使用 Gradle,如果我没记错的话,要声明对本地 JAR 文件的依赖项,您只需在依赖项配置中执行类似 implementation(file("path-to-jar")) 的操作。

标签: java maven javafx java-11 javafx-11


【解决方案1】:
【解决方案2】:

没有 Gradle/Maven 不是解决方案,但我强烈建议您尝试使用 Gradle。创建一个新的 Gradle 项目(如果使用 IntelliJ 则非常简单),您只需要在 build.gradle 文件中添加依赖项即可。我使用 JavaFX 制作 Gradle 项目的示例:

plugins {
    // Apply the application plugin to add support for building a CLI application in java.
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.9'
}

repositories {
    mavenCentral()
}

dependencies {
    // This dependency is used by the application
    implementation 'com.google.guava:guava:29.0-jre'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'

    // Use JUnit test framework
    testCompile('org.junit.jupiter:junit-jupiter-api:5.3.1')
    testCompile('org.junit.jupiter:junit-jupiter-engine:5.3.1')

}

run {
    standardInput = System.in
}

application {
    mainClass = "com.Nephty.main"
}

javafx {
    version = "15.0.1"
    modules = [ 'javafx.controls' , 'javafx.fxml' , 'javafx.media' ]
}

两个重点:存储库、应用程序和 javafx。

在存储库中,您可以指定要从中下载库的存储库,因此您不必将它们保存在本地计算机上。这有助于共享您的程序,因为其他用户不必自己下载和设置 JavaFX(这对于非技术人员来说是不可能的)。

在 JavaFX 中,您可以指定要使用的模块和版本。

在应用程序中,您指定要运行的主类。

然后,您可以执行控制台命令:运行 gradew.bat(将 cwd 作为您的项目目录)或使用 IntelliJ 中易于访问的任务。之后,您可以创建一个快捷方式,该快捷方式将自动运行控制台命令,而无需您打开控制台并输入所有内容。如果您是唯一将使用您的应用程序的人,这与拥有一个可执行文件相同(如果我们只关心使用该程序)。

有一个应用程序可以帮助为 java 应用程序构建可执行文件。 This视频说明了。

希望您能在这里找到您想要的东西。如果没有,请不要介意回复,以便我们尝试解决问题。

【讨论】:

  • @Voltaire 如果您最终使用 Gradle,您可能需要查看 badass-jlink-plugin 以便更轻松地通过 jpackage 创建可执行文件(假设您使用的 Java 版本包括jpackage,即 Java 14+)。使用 jpackage 打包通常优于可执行 JAR 文件,尤其是对于 JavaFX。
  • 此外,还有一些说明:如果您打算在应用程序中使用System.in 进行用户输入,那么您应该只需要run { standardInput = System.in },这在GUI 应用程序中是非典型的。 Guava 和 JUnit Jupiter 依赖声明不是必要的,但如果你使用它们,显然保留它们。请记住,Gradle 是一种开发工具,在部署后不存在于您的应用程序中;所以虽然 Gradle 确实让依赖管理变得更容易,但你仍然需要在应用程序中提供依赖(jpackage 可以让这变得简单)。
  • 感谢您提供的信息,我不知道我是否真的可以删除此行。另外,我使用 Gradle 进行开发,如果我想将应用程序发送给我的朋友,他们可以使用 Gradle 运行它,因为他们有点技术。虽然我从未想过更广泛(更广泛?)的部署,但 jpackage 可能会派上用场。
猜你喜欢
  • 2020-05-23
  • 2020-07-27
  • 2012-10-11
  • 2020-01-05
  • 2015-05-03
  • 2019-02-07
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
相关资源
最近更新 更多