如何用 Gradle 打包 javafx 应用程序?

How to package javafx application with Gradle?

我用 gradle 构建了 javafx 应用程序,我正在使用外部库 apache poixml 并且需要为它创建 jar 并且在使用 poixml 类 时它无法 运行 我在 github 上尝试过的示例项目:https://github.com/IslamAssem/HelloFX-Gradle

我假设您使用单独下载的 OpenJFX14 jar 并将其包含到您的构建路径中。

我会通过 Gradle 将 JavaFX 添加到您的依赖项中。


dependencies {
    implementation 'org.apache.poi:poi:4.1.1'
    implementation 'org.apache.poi:poi-ooxml:4.1.1'
    testCompile group: 'junit', name: 'junit', version: '4.12'


    // here starts JavaFX
    implementation 'org.openjfx:javafx:14'

    compile 'org.openjfx:javafx-base:14'
    compile 'org.openjfx:javafx-graphics:14'
    compile 'org.openjfx:javafx-controls:14'
    compile 'org.openjfx:javafx-fxml:14'
    compile 'org.openjfx:javafx-swing:14'
    compile 'org.openjfx:javafx-media:14'
    compile 'org.openjfx:javafx-web:14'
}

然后我会建议您的 Main 不在从 Application 扩展的 class 中。

您应该创建一个启动器。


public class Launcher{

   public static void main(String[] args){
     Application.launch(HelloFX.class,args);
   }
}

并使用 JavaFX 构建 Jar...

将此添加到您的 build.gradle:


jar {
    manifest {
        attributes(
                'Main-Class': 'your.main.package.Launcher' // replace with you main class
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

这应该成交。