📅  最后修改于: 2023-12-03 15:25:23.136000             🧑  作者: Mango
在使用 Google API Client 连接谷歌 API 服务时,我们需要为 HttpTransport 配置要使用的证书文件,常见的证书文件格式是 Java KeyStore(.jks)格式。然而,在尝试使用 GoogleNetHttpTransport
时报错 未找到 jks - Java
,这意味着我们需要手动添加 Java KeyStore 类库。
Java KeyStore 类库不是默认包含在 Java 运行库中的。由于厂商和 JDK 版本之间可能存在差异,因此我们需要手动添加该类库来确保程序能够正常运行。
下载 bcprov-jdk15on.jar
文件:https://www.bouncycastle.org/latest_releases.html
将下载的文件放到 Java 运行环境的 lib/ext
目录中,该目录默认位于 Java 安装目录下的 /jre/lib/ext/
。
注意: 如果使用 JDK11 及以上版本,则需要将文件保存到 ${JAVA_HOME}/conf/security/
目录下。
在代码中添加以下代码:
Security.addProvider(new BouncyCastleProvider());
使用 GoogleNetHttpTransport.Builder
的 newTrustedTransport()
方法即可成功创建 HTTP 传输对象。
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class MyGoogleApiService {
private static final HttpTransport HTTP_TRANSPORT;
static {
try {
Security.addProvider(new BouncyCastleProvider());
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// 省略其他代码
}
在使用 Google API Client 时,如果我们遇到了 GoogleNetHttpTransport
找不到证书文件的问题,可以按照本文介绍的方法手动添加 Java KeyStore 类库,并在程序中增加代码以确保正确使用证书文件。