正在尝试运行JavaFX应用程序的可执行jar-错误:缺少JavaFX运行时组件

正在尝试运行JavaFX应用程序的可执行jar-错误:缺少JavaFX运行时组件,java,javafx,executable-jar,java-module,Java,Javafx,Executable Jar,Java Module,我已经创建了一个JavaFX11应用程序,可以部署了 我使用Gradle 5.0作为构建工具,并使用以下命令编译jar: jar { manifest { attributes( 'Main-Class': 'checkmydigitalfootprint.MainApp' ) } from { configurations.runtimeClasspath.collect { it.isDi

我已经创建了一个JavaFX11应用程序,可以部署了

我使用Gradle 5.0作为构建工具,并使用以下命令编译jar:

jar {
    manifest {
        attributes(
                'Main-Class': 'checkmydigitalfootprint.MainApp'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
 }
然后在命令行中,我尝试了不同的命令来运行jar文件:

java -jar CheckMyDigitalFootprint.jar

java -jar CheckMyDigitalFootprint.jar --module-path="/users/joseph/eclipse-workspace/javafx-sdk-11.0.1/lib" --add-modules=javafx.controls

java -jar CheckMyDigitalFootprint.jar --module-path="/users/joseph/eclipse-workspace/javafx-sdk-11.0.1/lib" --add-modules=javafx.controls --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
但所有这些都会导致相同的错误:

Error: JavaFX runtime components are missing, and are required to run this application
build.gradle的其余部分:

plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.5'
  id 'eclipse'
}

repositories {
    mavenCentral()
}

dependencies {
    /* uncomment for cross-platform jar: */
//    compile "org.openjfx:javafx-graphics:11:win"
//    compile "org.openjfx:javafx-graphics:11:linux"
    compile "org.openjfx:javafx-graphics:11:mac"
    compile 'com.jfoenix:jfoenix:9.0.8'
    compile 'org.json:json:20180813'
    compile 'com.google.api-client:google-api-client:1.23.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    compile 'com.google.apis:google-api-services-gmail:v1-rev83-1.23.0'
    compile group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'
    compile 'com.sun.activation:javax.activation:1.2.0'  
    compile group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2'
    testCompile "org.testfx:testfx-core:4.0.15-alpha"
    testCompile "org.testfx:testfx-junit:4.0.15-alpha"
}

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

run {
    if (osdetector.os == 'windows') {
        // Temporal fix for Eclipse with JDK 1.8 and Windows 
        systemProperty "java.library.path", "C:\tmp"
    }
}

jar {
    manifest {
        attributes(
                'Main-Class': 'checkmydigitalfootprint.MainApp'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
 }

mainClassName = 'checkmydigitalfootprint.MainApp'
这一点在

解决方案很简单,只需添加以下虚拟机选项

--module-path /path/to/javafx-sdk-11.0.1/lib --add-modules=javafx.controls,javafx.fxml
为您的Gradle项目应用JavaFX Gradle插件

plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.5'
}
添加所需的模块。e、 g:

javafx {
    modules = [ 'javafx.controls' ]
}
指定JavaFX的版本

javafx {
    version = "11.0.+"
}
希望这能对您有所帮助:)

这在

解决方案很简单,只需添加以下虚拟机选项

--module-path /path/to/javafx-sdk-11.0.1/lib --add-modules=javafx.controls,javafx.fxml
为您的Gradle项目应用JavaFX Gradle插件

plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.5'
}
添加所需的模块。e、 g:

javafx {
    modules = [ 'javafx.controls' ]
}
指定JavaFX的版本

javafx {
    version = "11.0.+"
}

希望这能对您有所帮助:)

我没有Gradle方面的经验,但在运行jar时遇到了相同的问题,给出了“JavaFX运行时组件丢失…”。(使用openJDK/jfx11。)即使命令行中正确包含了vm参数。问题在于构建可运行jar的“库处理”选项。“提取所需库…”未执行此操作。“Package required libraries…”是使用JavaFX依赖项构建可运行jar文件的正确选项。

我没有使用Gradle的经验,但在运行jar时遇到了相同的问题,即“缺少JavaFX运行时组件…”。(使用openJDK/jfx11。)即使命令行中正确包含了vm参数。问题在于构建可运行jar的“库处理”选项。“提取所需库…”未执行此操作。“Package required libraries…”是构建具有JavaFX依赖项的可运行jar文件的正确选项。

您可以使用此选项解决问题


Java-jar--module path/path/to/javafx-sdk-11.0.1/lib--add modules=javafx.controls,javafx.fxml(jar文件的路径)

您可以通过使用


Java-jar--module path/path/to/javafx-sdk-11.0.1/lib--add modules=javafx.controls,javafx.fxml(jar文件的路径)

在命令行上,尝试将
-jar checkmydigitalfootprint.jar
位放在命令末尾。运行
java--help
说明格式是:
java[options]-jar[args…]
,这就解决了这个问题。谢谢;)如果您仍然需要向命令行添加一些额外的参数,那么这不是一个“胖”jar。是否要添加启动器类(如中)?在命令行上,尝试将
-jar checkMyDigitalFootPrint.jar
位放在命令末尾。运行
java--help
说明格式是:
java[options]-jar[args…]
,这就解决了这个问题。谢谢;)如果您仍然需要向命令行添加一些额外的参数,那么这不是一个“胖”jar。您是否正在添加启动器类(如中)?不,这也不起作用。双击导出的jar文件时不会打开任何内容。不,这也不起作用。双击导出的jar文件时,不会打开任何内容。