Intellij Idea Intellij:JavaFX项目中缺少JavaScript组件[重复]

hk8txs48  于 2023-10-15  发布在  Java
关注(0)|答案(1)|浏览(140)

此问题已在此处有答案

Maven Shade JavaFX runtime components are missing(1个答案)
IntelliJ can't recognize JavaFX 11 with OpenJDK 11(7个回答)
21天前关闭。
我正在尝试,在windows机器上,从我创建的项目中创建.jar文件。我可以通过jlink创建.jar文件,并使用自定义jar {}将所有jar压缩到一个.jar文件中。
当我尝试运行.jar文件时,我得到了错误:这个应用程序缺少javaFX所需的运行时组件。我甚至尝试在.jar文件中直接包含JavaFX的目录,但我无法解决这个错误。
否则,如果我从主类运行项目,我不会遇到这个错误。有没有一种方法可以将JavaFX的JavaScript组件直接插入到.jar文件中?
在这里你可以看到我的build.gradle文件:

plugins {
id 'java'
id 'application'
id 'org.javamodularity.moduleplugin' version '1.8.12'
id 'org.openjfx.javafxplugin' version '0.0.13'
id 'org.beryx.jlink' version '2.25.0'
}

group 'com.preventivoApp'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

ext {
    junitVersion = '5.9.1'
}

sourceCompatibility = '17'
targetCompatibility = '17'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

application {
    mainModule = 'com.preventivoapp.appproject_preventivo'
    mainClass = 'com.preventivoapp.appproject_preventivo.QuoteMainApplication'
}

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

dependencies {
    implementation('org.controlsfx:controlsfx:11.1.2')

    testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")

    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.15.0'
    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.15.0'
    implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.15.0'

    implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.28'
}

test {
    useJUnitPlatform()
}

task copyJavaFXLibs(type: Copy) {
    from 'C:\\Users\\dcfre\\Downloads\\javafx-sdk-17.0.8\\lib'
    into 'libs'
}

jar {
    dependsOn copyJavaFXLibs
    manifest {
        attributes 'Main-Class' : 'com.preventivoapp.appproject_preventivo.QuoteMainApplication'
    }
    from {
        duplicatesStrategy = DuplicatesStrategy.INCLUDE
        configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it)}
    }
}

jlink {
    imageZip = project.file("${buildDir}/distributions/app-${javafx.platform.classifier}.zip")
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
    launcher {
        name = 'app'
    }
}

jlinkZip {
    group = 'distribution'
}

任何帮助都会很有帮助。先谢了。

j5fpnvbx

j5fpnvbx1#

为了解决我的问题,我发现这很简单。我跟着这个guide
我也可以使用相同的.jar文件来创建我的项目的.exe文件使用lauch4j。

相关问题