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

Rocky Linux 9.1执行gradle bootBuildImage时资源包缺失报错

执行gradle bootBuildImage时抛出MissingResourceException:找不到jakarta.servlet.LocalStrings资源包

环境信息

system:Rocky Linux 9.1
build:gradle 7.6
run:gradle bootBuildImage

完整报错堆栈

Caused by: java.util.MissingResourceException: Can't find bundle for base name jakarta.servlet.LocalStrings, locale en_US
        at java.base@17.0.6/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045) ~[com.unimet.test.graalvm.GraalvmApplication:na]
        at java.base@17.0.6/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683) ~[com.unimet.test.graalvm.GraalvmApplication:na]
        at java.base@17.0.6/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586) ~[com.unimet.test.graalvm.GraalvmApplication:na]
        at java.base@17.0.6/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549) ~[com.unimet.test.graalvm.GraalvmApplication:na]
        at java.base@17.0.6/java.util.ResourceBundle.getBundle(ResourceBundle.java:858) ~[com.unimet.test.graalvm.GraalvmApplication:na]
        at jakarta.servlet.GenericServlet.<clinit>(GenericServlet.java:51) ~[com.unimet.test.graalvm.GraalvmApplication:6.0.0]
        ... 75 common frames omitted

项目build.gradle配置

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'org.graalvm.buildtools.native' version '0.9.18'
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-undertow")
    implementation("org.springframework.boot:spring-boot-starter-web") {
        exclude module: 'spring-boot-starter-tomcat'
    }
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

解决方案

该问题源于GraalVM原生镜像构建时未自动包含jakarta.servlet.LocalStrings相关资源文件,需显式声明资源包包含规则,可通过以下任一方式解决:

方式一:添加native-image.properties配置

  1. 创建目录src/main/resources/META-INF/native-image/(不存在则新建)
  2. 在该目录下创建native-image.properties文件,写入:
Args = -H:IncludeResourceBundles=jakarta.servlet.LocalStrings

方式二:在build.gradle中配置GraalVM插件

修改build.gradle,添加GraalVM原生镜像构建参数:

graalvmNative {
    binaries {
        main {
            buildArgs.add("-H:IncludeResourceBundles=jakarta.servlet.LocalStrings")
        }
    }
}

方式三:升级GraalVM构建工具插件

尝试将org.graalvm.buildtools.native插件版本升级至0.9.20或更高,新版本可能已修复资源包自动检测问题:

plugins {
    // 保留其他插件配置
    id 'org.graalvm.buildtools.native' version '0.9.20'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:15:38