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

Quarkus原生可执行文件中GoogleAuthorizationCodeRequestUrl构建异常求助

解决Quarkus原生模式下GoogleAuthorizationCodeRequestUrl的Map为空问题

解决方案

1. 完善反射配置文件

Quarkus原生模式需要明确注册GenericData及其子类的反射规则,仅注册GenericUrl不足以覆盖动态Map的访问需求。更新reflection-config.json:

[
  {
    "name": "com.google.api.client.util.GenericData",
    "allDeclaredFields": true,
    "allPublicMethods": true,
    "allDeclaredMethods": true
  },
  {
    "name": "com.google.api.client.http.GenericUrl",
    "allDeclaredFields": true,
    "allPublicMethods": true,
    "allDeclaredMethods": true
  }
]

并在application.properties中确保配置生效:

quarkus.native.additional-build-args=-H:ReflectionConfigurationFiles=reflection-config.json

2. 使用Quarkus反射注解替代配置文件

在应用启动类或相关类上添加@RegisterForReflection注解,直接指定需要反射支持的类型:

import io.quarkus.runtime.annotations.RegisterForReflection;

@RegisterForReflection(targets = {
    com.google.api.client.util.GenericData.class,
    com.google.api.client.http.GenericUrl.class
})
public class YourApplicationEntryPoint {
}

这种方式无需手动维护JSON配置,Quarkus会在构建原生镜像时自动处理。

3. 明确指定GenericData的核心字段与方法

如果动态字段仍无法访问,可在反射配置中明确指定GenericData存储数据的map字段及核心方法:

{
  "name": "com.google.api.client.util.GenericData",
  "fields": [{"name": "map"}],
  "methods": [
    {"name": "put", "parameterTypes": ["java.lang.String", "java.lang.Object"]},
    {"name": "get", "parameterTypes": ["java.lang.String"]}
  ]
}

4. 验证反射配置是否生效

构建原生镜像时添加参数输出反射配置,确认相关类已被正确包含:

./mvnw package -Dnative -Dquarkus.native.additional-build-args=-H:PrintReflectionConfiguration

检查输出内容,确保GenericData和GenericUrl的反射规则存在。

5. 绕过动态Map的替代实现

若反射配置仍未解决问题,可手动构建参数并注入GenericUrl:

Map<String, Object> authParams = new HashMap<>();
authParams.put("client_id", "your-client-id");
authParams.put("redirect_uri", "your-redirect-uri");
authParams.put("response_type", "code");
authParams.put("scope", "openid email profile");

GenericUrl authUrl = new GenericUrl("https://accounts.google.com/o/oauth2/v2/auth");
authParams.forEach(authUrl::put);

这种方式不依赖GenericData的动态反射特性,在原生模式下更稳定。

内容的提问来源于stack exchange,提问作者Daniel Teleginski Camargo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:17