此问题已在此处有答案:
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'
}
任何帮助都会很有帮助。先谢了。
1条答案
按热度按时间j5fpnvbx1#
为了解决我的问题,我发现这很简单。我跟着这个guide
我也可以使用相同的.jar文件来创建我的项目的.exe文件使用lauch4j。