graalvm构建jar运行获取可达性元数据resource-config.json
在较新版本的 GraalVM(特别是 GraalVM For JDK 17/21/22+ 以及与之配套的 Native Image Agent)中,输出结构做出了重大优化。
为什么只有这一个文件(resource-config.json)?
以前的 Agent 会分开生成 resource-config.json、reflect-config.json 等独立文件。而新版 GraalVM 引入了 Reachability Metadata(可达性元数据) 的统一规范。
你看到的 reachability-metadata.json 实际上是一个合体文件(或者是包含多类配置的统一元数据描述)。
- 打开这个文件,你会发现它内部已经包含了
resources、reflection、serialization等不同维度的配置段落。 - GraalVM 编译器同样能完全识别并正确读取它。
java -agentlib:native-image-agent=config-output-dir=/path/to/your/output -jar target/valuation-engine-runtime.jar
如果想要标准的 resource-config.json
如果你希望生成传统的分离式配置文件(包含独立的 resource-config.json),你只需要在启动命令的 agentlib 参数中加入 experimental-configuration-with-origins 或者是显式指定输出格式。
直接让 Agent 切换回旧版的多文件输出模式
1 | java -agentlib:native-image-agent=config-output-dir=/path/to/your/output,format=experimental-modern -jar target/valuation-engine-runtime.jar |
注意末尾的
,format=experimental-modern或者是直接不指定高级格式,在新版中如果默认生成了单文件,通常可以在该目录下寻找或直接把reachability-metadata.json放到对应的位置。