错误:缺少JavaFX运行时组件,使用Gradle示例运行此应用程序需要这些组件

错误:缺少JavaFX运行时组件,使用Gradle示例运行此应用程序需要这些组件,gradle,javafx,Gradle,Javafx,我知道这已经被问了很多次了。。。但我似乎找不到解决办法 摘自本官方指南示例: 我继续在我的构建中添加。gradle: plugins { id 'application' id 'org.openjfx.javafxplugin' version '0.0.8' } javafx { version = '13' modules = ['javafx.controls'] } repositories { mavenCentral() } mainC

我知道这已经被问了很多次了。。。但我似乎找不到解决办法

摘自本官方指南示例: 我继续在我的构建中添加。gradle

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

javafx {
    version = '13'
    modules = ['javafx.controls']
}

repositories {
    mavenCentral()
}

mainClassName = "MyImage"

jar {
    manifest {
        attributes "Main-Class": "$mainClassName"
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
通过运行gradle jar(或gradle build),实际上应该生成一个jar,其中应该包含它构建它所用的所有包,即整个javafx库

但是,当它成功构建并继续运行时:

java-jarbuild/libs/MyImage.jar

它仍然抛出错误:

错误:缺少JavaFX运行时组件,运行此应用程序需要这些组件

我错过了什么

(我使用JDK 11)


非常感谢。

在Java 11中,Java启动器检测到您正在扩展javafx.application.application,并检查模块是否存在。如果您使用的是普通的旧罐子,那么您将得到错误

Error: JavaFX runtime components are missing, and are required to run this application
你有两个选择。设置应用程序以使用Java模块系统或以下解决方法

这种解决方法避免了Java启动程序检查,并允许应用程序运行

public class MyImage {   // <=== note - does not extend Application

    public static class YourRealApplication extends Application {

        @Override
        public void start(Stage primaryStage) throws Exception {
            // whatever...
        }

    }

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

}

public class MyImage{//在Java 11中,Java启动器检测到您正在扩展javafx.application.application并检查模块是否存在。如果您使用的是普通的旧JAR,则会出现错误

Error: JavaFX runtime components are missing, and are required to run this application
您有两种选择。将应用程序设置为使用Java模块系统或以下解决方法

这种解决方法避免了Java启动程序检查,并允许应用程序运行

public class MyImage {   // <=== note - does not extend Application

    public static class YourRealApplication extends Application {

        @Override
        public void start(Stage primaryStage) throws Exception {
            // whatever...
        }

    }

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

}
公共类MyImage{//