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

GraalVM native-image构建报错:sun.invoke.util.ValueConversions.booleanToInt方法缺失

解决GraalVM Native Image运行JNA应用时找不到sun.invoke.util.ValueConversions.booleanToInt的问题

问题原因

GraalVM原生镜像构建时,默认不会自动收集JDK内部API(如sun.invoke.util.ValueConversions)的反射元数据,而JNA在处理类型转换(如boolean转int)时会通过反射调用该类的booleanToInt方法,导致运行时抛出NoSuchMethodException。

解决方案

1. 添加反射配置文件

创建src/main/resources/META-INF/native-image/reflect-config.json文件,内容如下:

[
  {
    "name": "sun.invoke.util.ValueConversions",
    "methods": [
      {
        "name": "booleanToInt",
        "parameterTypes": ["boolean"]
      }
    ]
  }
]

该文件会告诉GraalVM在构建原生镜像时,为指定类和方法生成反射元数据。

2. 确保配置文件被打包进Jar

如果使用Maven,在pom.xml的<build>节点下添加资源配置,确保META-INF目录下的文件被正确打包:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <includes>
      <include>META-INF/**/*</include>
    </includes>
  </resource>
</resources>

3. 构建原生镜像

方式一:直接使用native-image命令

native-image -jar your-application.jar -H:ReflectionConfigurationFiles=src/main/resources/META-INF/native-image/reflect-config.json

方式二:使用Maven原生镜像插件

在pom.xml中配置native-maven-plugin,自动集成反射配置:

<plugins>
  <plugin>
    <groupId>org.graalvm.buildtools</groupId>
    <artifactId>native-maven-plugin</artifactId>
    <version>0.9.28</version>
    <executions>
      <execution>
        <id>build-native</id>
        <goals>
          <goal>build</goal>
        </goals>
        <phase>package</phase>
      </execution>
    </executions>
    <configuration>
      <imageName>your-app</imageName>
      <buildArgs>
        <buildArg>-H:ReflectionConfigurationFiles=${project.build.outputDirectory}/META-INF/native-image/reflect-config.json</buildArg>
      </buildArgs>
    </configuration>
  </plugin>
</plugins>

执行mvn package即可自动构建包含反射元数据的原生镜像。

4. 验证JNA版本兼容性

确保使用的JNA版本与GraalVM 17兼容,建议升级到5.14.0及以上版本,旧版本可能存在原生镜像适配问题。

验证

构建完成后,运行生成的原生可执行文件,即可正常调用共享库的square方法并打印结果。

内容的提问来源于stack exchange,提问作者burhan-taskesen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:52:52