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配置
- 创建目录
src/main/resources/META-INF/native-image/(不存在则新建) - 在该目录下创建
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
相关产品推荐
相关产品推荐

