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

JLink构建的JavaFX镜像中Logback无法正常工作的解决方法

解决JavaFX jlink镜像中SLF4J找不到logback提供者的问题

问题出在jlink构建的模块化运行时不会自动包含非应用直接依赖的模块,手动复制jar到lib目录无效是因为jlink镜像使用封闭的模块路径,外部jar不会被加载。以下是具体解决步骤:

1. 确保应用模块化并声明依赖

如果你的应用还没有module-info.java,在src/main/java下添加该文件,明确声明对logback和SLF4J的模块依赖:

module com.yourcompany.yourapp {
    // 依赖JavaFX模块,根据你的应用需求调整
    requires javafx.controls;
    requires javafx.fxml;
    
    // 声明logback与SLF4J的模块依赖
    requires logback.classic;
    requires org.slf4j;

    // 开放FXML所需的包(若使用FXML)
    opens com.yourcompany.yourapp to javafx.fxml;
    // 导出主类所在包
    exports com.yourcompany.yourapp;
    
    // 若logback配置文件在自定义资源包,开放该包给logback以读取配置
    opens com.yourcompany.yourapp.resources to logback.classic;
    // 若配置文件在根resources目录,使用`opens . to logback.classic;`
}

2. 配置javafx-maven-plugin的jlink参数

在pom.xml的javafx-maven-plugin中,明确指定jlink需要包含的模块,确保logback相关模块被纳入镜像:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <mainClass>com.yourcompany.yourapp.Main</mainClass>
        <launcher>yourapp</launcher>
        <jlinkImageName>target/image</jlinkImageName>
        <!-- 添加logback相关模块到jlink镜像 -->
        <addModules>
            <addModule>logback.classic</addModule>
            <addModule>logback.core</addModule>
            <addModule>org.slf4j</addModule>
        </addModules>
    </configuration>
    <executions>
        <execution>
            <id>run</id>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
        <execution>
            <id>jlink</id>
            <goals>
                <goal>jlink</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3. 确保logback配置文件被正确打包

将logback.xml(或logback.groovy)放在src/main/resources目录下,Maven会自动将其打包到模块资源中,jlink构建时会同步包含该文件。

4. 重新构建并运行

执行以下命令清理并构建jlink镜像:

mvn clean javafx:jlink

然后运行镜像中的启动脚本(比如target/image/bin/yourapp),日志功能即可正常工作。

内容的提问来源于stack exchange,提问作者Jardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:57:19