You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gradle+Spring Boot构建JavaFX安装包时jpackage报错求助

Spring Boot + JavaFX jpackage 打包错误排查

正在为支持Mac和Windows的Spring Boot JavaFX应用构建安装包,执行./gradlew jpackage命令时出现两个关键错误:

  • module not found: javafx.base requires javafx.base;
  • 调试阶段出现Unsupported class file major version 66

已尝试Stack Overflow等平台的多种解决方案,但问题仍未解决。当前使用Java 21,不确定是否存在兼容性问题。以下是使用的配置和操作步骤:

build.gradle 配置

plugins {
    id 'org.springframework.boot' version '3.3.2'
    id 'io.spring.dependency-management' version '1.1.6'
    id 'java'
    id 'application'
    id 'jacoco'
    id 'org.openjfx.javafxplugin' version '0.0.13'
    id 'org.beryx.jlink' version '2.26.0'
}

group = 'com.company'
version = '1.0.0'
sourceCompatibility = '21'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {

    // Spring Dependencies
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-batch'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'

    // External Dependencies
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.2'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.17.2'
    implementation 'io.netty:netty-resolver-dns-native-macos:4.1.72.Final:osx-aarch_64'
    implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
    runtimeOnly 'com.h2database:h2:2.3.230'

    // Test Dependencies
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.batch:spring-batch-test'
}

tasks.named('test') {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}

javafx {
    version = "21"
    modules = [ 'javafx.controls', 'javafx.fxml' ] // 'javafx.base' (also tried with this)
}

application {
    mainModule = 'com.company.accountmanagement' // Replace with your main module name
    mainClass = 'com.company.AccountManagementApplication.main' // Replace with your main class
}

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'
    }
    jpackage {
        jpackageHome = '/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home'
        installerType = 'dmg'
        imageOptions = []
        installerOptions = [
                '--resource-dir', "${projectDir}/src/main/resources",
                '--vendor', 'Company Name'
        ]
        installerName = 'AccountManagement'
        appVersion = '1.0.0'
        if (org.gradle.internal.os.OperatingSystem.current().windows) {
            installerOptions += ['--win-dir-chooser', '--win-menu', '--win-shortcut']
            imageOptions += ["--icon", "${projectDir}/src/main/resources/icon.ico"]
        }
        if (org.gradle.internal.os.OperatingSystem.current().macOsX) {
            installerOptions += ['--mac-package-name', 'AccountManagement']
            imageOptions += ["--icon", "${projectDir}/src/main/resources/icon.icns"]
        }
    }
}

tasks.jlink {
    group = 'distribution'
}

tasks.jpackage {
    group = 'distribution'
}

执行步骤

  • 构建应用:./gradlew build
  • 创建运行时镜像和安装包:./gradlew jpackage

module-info.java 配置

怀疑问题和模块声明有关,但检查后未发现明显问题:

module com.company.accountmanagement {
    requires javafx.base;
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.graphics;
    requires spring.boot;
    requires spring.context;
    requires jasypt.spring.boot;
    requires spring.boot.autoconfigure;

    opens com.company.accountmanagement to javafx.fxml;
    exports com.company.accountmanagement;
}

内容的提问来源于stack exchange,提问作者Murat Yıldız

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:14:51