简体   繁体   English

未找到 Javafx/应用程序 Gradle JavaFX

[英]Javafx/application not found Gradle JavaFX

When I run my code in Intellij, it runs perfectly fine.当我在 Intellij 中运行我的代码时,它运行得非常好。 When I build the gradle project and get the jar, that works great too.当我构建 gradle 项目并获得 jar 时,效果也很好。 However, when I try to run that jar I get this error:但是,当我尝试运行 jar 时,我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at classes.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 10 more

Here is my gradle build这是我的 gradle 构建

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

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(14))
    }
}

repositories {
    mavenCentral()
}

dependencies {

    implementation 'org.jetbrains:annotations:19.0.0'
    compile group: 'org.json', name: 'json', version: '20090211'
    compile group: 'com.google.guava', name: 'guava', version: '30.0-jre'
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'

}

javafx {
    version = "15.0.1"
    modules = ["javafx.controls", "javafx.fxml", "javafx.swing"]
}

version = '1.0'

jar {
    manifest {
        attributes(
                'Main-Class': 'classes.Main',
        )
    }
}

task fatJar(type: Jar) {
    manifest.from jar.manifest
    classifier = 'all'
    from {
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
    } {
        exclude "META-INF/.SF"
        exclude "META-INF/.DSA"
        exclude "META-INF/*.RSA"
    }
    with jar
}

artifacts {
    archives fatJar
}

This method of building the jar previously worked for my rest server application, no luck here though.这种构建 jar 的方法以前适用于我的 rest 服务器应用程序,但这里没有运气。 Am I going about this wrong?我要解决这个问题了吗?

You need to add the dependency:您需要添加依赖项:

javafx:javafx.controls:11.0.0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM