首页 > 解决方案 > 带有JavaFX组件的Gradle构建jar文件找不到主类

问题描述

我正在尝试为我的 JavaFX 项目创建一个 jar 文件,但我似乎无法让它工作。根据我所做的,我会混合两种不同的错误: Error: Could not find or load main class mapsRUs.MapsRUs& Error: 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-task 生成的清单文件如下所示:

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 ...
    }

谁能弄清楚这里出了什么问题?提前致谢!

标签: javagradlejavafxbuild.gradlemanifest

解决方案


推荐阅读