带有JavaFX组件的Gradle构建jar文件找不到主类

时间:2019-05-05 08:27:32

标签: java gradle javafx build.gradle manifest

我正在尝试为我的JavaFX项目创建一个jar文件,但似乎无法正常工作。根据我的操作,我会混合使用两种不同的错误: Error: Could not find or load main class mapsRUs.MapsRUsError: JavaFX runtime components are missing, and are required to run this application。使用此配置,这是两者中的第一个。

我的build.gradle看起来像这样:

plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.7'
}

javafx {
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

applicationDefaultJvmArgs = ["-Xmx4g"]

mainClassName = 'mapsRUs.MapsRUs'

dependencies {
    compile 'com.google.guava:guava:23.0'

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.2'

    // Use JUnit test framework
    testCompileOnly 'junit:junit:4.12'
    testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.3.1'
}

repositories {
    jcenter()
}

test {
    useJUnitPlatform()
}

jar {
    baseName = "Maps R Us"
    manifest {
        attributes 'Main-Class': mainClassName
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

jar任务生成的清单文件如下所示:

Manifest-Version: 1.0
Main-Class: mapsRUs.MapsRUs

我的主类包括此内容(它还有一些与该主题无关的东西)

public class MapsRUs extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        ... some code ...
    }

有人能找出这里有什么问题吗?预先感谢!

0 个答案:

没有答案