如何从 gluon 项目导出 .jar 文件?

How to export a .jar file from a gluon project?

知道如何导出包含 gluon 项目所有内容的 .jar 吗? 我使用了 Shadow jar 但结果打不开并给出

    Exception in Application start method
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/sun/javafx/css/converters/SizeConverter
        at com.gluonhq.charm.glisten.control.AppBar.<clinit>(SourceFile:406)
        at com.gluonhq.charm.glisten.application.MobileApplication.start(SourceFile:191)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop(Unknown Source)
        ... 1 more
Caused by: java.lang.ClassNotFoundException: com.sun.javafx.css.converters.SizeConverter
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 11 more

要导出 Gluon 项目的 jar 以便它 运行 在桌面上,您可以使用 Shadow plugin like in this , or you can use the built-in tasks jar or `distZip, but taking into account that you need to modify the build to include the desktop dependencies, as in

之后,根据您使用的依赖项,生成的 jar 将 运行 Java 8 或 Java 9。

到目前为止,常规 jfxmobile 插件使用依赖项 Java 8:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.3.9'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
    maven {
        url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
}

dependencies {
    compile 'com.gluonhq:charm:4.4.1'
}

因此生成的 jar 将 运行 仅在 Java 8.

但是您可以修改构建,这样您就可以 运行 Java 9 在桌面上:

dependencies {
    compile 'com.gluonhq:charm:4.4.0-jdk9'
}

请注意,如果您有其他依赖项,它们也应该与 Java 9 兼容。