JavaFX 11:使用Gradle创建一个jar文件

我正在尝试将JavaFX项目从8 Java版本升级到11版本。当我使用“运行” Gradle任务(遵循Openjfx教程)时,它可以工作,但是当我构建(使用“ jar” Gradle任务)并执行(使用“ java -jar”)一个jar文件时,消息“错误” :缺少JavaFX运行时组件,并且是运行此应用程序所必需的”。


这是我的build.gradle文件:


group 'Project'

version '1.0'

apply plugin: 'java'

sourceCompatibility = 1.11


repositories {

    mavenCentral()

}


def currentOS = org.gradle.internal.os.OperatingSystem.current()

def platform

if (currentOS.isWindows()) {

    platform = 'win'

} else if (currentOS.isLinux()) {

    platform = 'linux'

} else if (currentOS.isMacOsX()) {

    platform = 'mac'

}

dependencies {

    compile "org.openjfx:javafx-base:11:${platform}"

    compile "org.openjfx:javafx-graphics:11:${platform}"

    compile "org.openjfx:javafx-controls:11:${platform}"

    compile "org.openjfx:javafx-fxml:11:${platform}"

}


task run(type: JavaExec) {

    classpath sourceSets.main.runtimeClasspath

    main = "project.Main"

}


jar {

    manifest {

        attributes 'Main-Class': 'project.Main'

    }

    from {

        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }

    }

}


compileJava {

    doFirst {

        options.compilerArgs = [

                '--module-path', classpath.asPath,

                '--add-modules', 'javafx.controls,javafx.fxml'

        ]

    }

}


run {

    doFirst {

        jvmArgs = [

                '--module-path', classpath.asPath,

                '--add-modules', 'javafx.controls,javafx.fxml'

        ]

    }

}

你知道我该怎么办吗?


桃花长相依
浏览 1104回答 3
3回答

潇湘沐

使用最新版本的JavaFX,您可以使用两个Gradle插件轻松分发您的项目(javafxplugin和jlink)。使用这些插件,您可以:创建一个包含所有必需的jar文件的可分发zip文件:它需要执行JRE(使用bash或批处理脚本)为给定的操作系统使用Jlink创建本机应用程序:不需要JRE来执行它,因为Jlink在分发文件夹中包含“轻型” JRE(仅包括所需的Java模块和依赖项)如果您想举一个例子,我在bitbucket上做了一个例子。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java