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

GraalVM 23反射配置问题:无法生成reflect-config.json及元数据文件失效

解决GraalVM 23升级后的原生镜像反射配置问题

先处理RestartScopeInitializer的报错

这个类属于Spring Boot DevTools组件,而DevTools是为JVM开发阶段的热重启优化设计的,完全不适合原生镜像场景。你可以通过以下两种方式解决:

  • 直接排除DevTools依赖:
    在pom.xml中修改依赖配置:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
        <exclusions>
            <exclusion>
                <groupId>*</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    或者直接删除该依赖项。
  • 保留依赖但禁用DevTools功能:
    在application.properties中添加配置:
    spring.devtools.restart.enabled=false
    
    同时运行agent生成配置时,避免触发DevTools的相关逻辑。

GraalVM 23的正确构建参数配置

GraalVM 23改用reachability-metadata.json作为统一的可达性配置文件,替代了旧版的多个独立配置文件(如reflect-config.json)。正确的配置方式:

  1. 将agent生成的reachability-metadata.json放在指定目录(比如META-INF/native-image)
  2. 在pom.xml的native-image构建参数中配置:
    <buildArg>-H:ConfigurationFileDirectories=META-INF/native-image</buildArg>
    
    注意:该参数接收的是目录路径,GraalVM会自动读取目录下的reachability-metadata.json文件。

如果要继续使用旧版的reflect-config.json,GraalVM 23仍兼容,保留原有参数即可:

<buildArg>-H:ReflectionConfigurationFiles=META-INF/native-image/reflect-config.json</buildArg>

若同时使用新旧两种配置文件,两者的配置会合并,优先级以命令行参数的顺序为准。

让新版Agent生成旧格式的reflect-config.json

新版agent默认生成统一的元数据文件,但可以通过添加参数强制生成旧格式的独立配置文件:

java -agentlib:native-image-agent=config-output-dir=META-INF/native-image,experimental-config-format=legacy -jar your-app.jar

添加experimental-config-format=legacy参数后,agent会生成旧版的reflect-config.json、resource-config.json等独立配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:50:01