如何构建可执行的 JavaFX 11 应用程序

时间:2021-07-03 11:19:56

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

问题

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

我不想使用 Maven/Gradle,因为; 使用 Maven:我无法使用我的本地 jar 库,我尝试将其作为一个库包含在内,使用 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 中)
  • 项目有多个类和场景。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:-1)

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

有一个应用程序可以帮助为 Java 应用程序构建可执行文件。 This 视频对此进行了解释。

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