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

Java调用Google Cloud API报应用默认凭证不可用问题排查

Google Cloud Vision API 凭证配置报错解决方案

你遇到的Application default credentials are not available报错,按以下步骤逐一排查即可解决:

修复CMD环境变量配置语法错误

你当前使用的环境变量设置命令是Windows CMD下的典型错误写法:set GOOGLE_APPLICATION_CREDENTIALS='key_path'里的单引号会被系统识别为路径的组成部分,导致Google SDK无法定位到凭证文件。

  • 正确的临时设置命令(替换为你本地密钥文件的绝对路径):
# 路径无空格时不要加任何引号
set GOOGLE_APPLICATION_CREDENTIALS=C:\gcloud\keys\vision-service-account.json

# 路径包含空格时仅使用双引号包裹
set GOOGLE_APPLICATION_CREDENTIALS="C:\my project\gcloud key\vision-key.json"
  • 配置后执行echo %GOOGLE_APPLICATION_CREDENTIALS%验证输出的路径无多余引号、路径正确
  • 注意:通过set命令设置的环境变量仅对当前CMD窗口生效,如果你在IDE中运行代码,要么在IDE的运行配置中添加同名环境变量,要么在Windows系统环境变量面板中新建永久变量,配置完成后重启IDE/命令行工具再运行代码。

校验服务账号与API状态

路径配置正确后仍报错的话,确认以下配置:

  • 已在Google Cloud控制台对应项目下启用Cloud Vision API
  • 密钥对应的服务账号已分配Vision API访问权限(至少拥有roles/vision.user角色)
  • 本地存储的json密钥文件未损坏,用文本编辑器打开可看到project_id、client_email、private_key等完整字段

代码显式加载凭证(本地调试推荐)

如果不想依赖系统环境变量,可以直接在代码中指定凭证路径,彻底规避环境配置问题,修改原有客户端初始化逻辑即可:

  1. 补充缺失的导入:
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.vision.v1.ImageAnnotatorSettings;
import java.io.FileInputStream;
  1. 替换原有的ImageAnnotatorClient vision = ImageAnnotatorClient.create()初始化代码:
// 替换为你的密钥文件实际绝对路径
String keyPath = "C:\\gcloud\\keys\\vision-service-account.json";
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(keyPath))
        .createScoped("https://www.googleapis.com/auth/cloud-vision");
ImageAnnotatorSettings clientSettings = ImageAnnotatorSettings.newBuilder()
        .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
        .build();

try (ImageAnnotatorClient vision = ImageAnnotatorClient.create(clientSettings)) {
    // 原有图像标注业务逻辑保持不变即可
    String fileName = "./resources/wakeupcat.jpg";
    Path path = Paths.get(fileName);
    byte[] data = Files.readAllBytes(path);
    ByteString imgBytes = ByteString.copyFrom(data);
    // 后续逻辑和你原来的代码一致
}

其他排查点

  • 如果你开启了系统网络代理,需要将googleapis.com相关域名加入代理直连列表,避免代理拦截凭证校验请求
  • 不要使用gcloud auth application-default login生成的用户凭证替代服务账号密钥做生产环境部署,该方式仅适合本地临时测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:09:28