【问题标题】:StorageServiceAccountSample application reports "KeyStore JKS implementation not found"StorageServiceAccountSample 应用程序报告“未找到 KeyStore JKS 实现”
【发布时间】:2013-09-22 15:43:01
【问题描述】:

StorageServiceAccountSample的第一行

HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

导致“找不到 KeyStore JKS 实现”:

W/System.err(20142): java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found
W/System.err(20142):    at java.security.KeyStore.getInstance(KeyStore.java:119)
W/System.err(20142):    at com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:48)
W/System.err(20142):    at com.google.api.client.googleapis.GoogleUtils.getCertificateTrustStore(GoogleUtils.java:74)
W/System.err(20142):    at com.google.api.client.googleapis.javanet.GoogleNetHttpTransport.newTrustedTransport(GoogleNetHttpTransport.java:55)

当我读到 Android 不支持 JKS 时,我应该如何修改这个方法来解决它?

【问题讨论】:

    标签: android google-api-java-client


    【解决方案1】:

    替换

    HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    

    HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
    

    问题就解决了。

    【讨论】:

    • 对于那些遵循这条路线的人,AndroidHttp 类在com.google.api.client.extensions.android.http 包中。不是com.google.api.client.extensions.android2.AndroidHttp,已弃用
    • 是的,第一个 GoogleNetHttpTransport 适用于 Java(或非 Android 测试),而在 Android 上运行时需要第二个 AndroidHttp。这被打包为 Android 的 Google API 客户端的扩展。在我的例子中:implementation 'com.google.api-client:google-api-client-android:1.25.0'
    【解决方案2】:

    我在google issue tracker.找到了答案

    替换

    HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    

    HTTP_TRANSPORT = new com.google.api.client.http.javanet.NetHttpTransport()
    

    但不知道它是如何工作的。

    【讨论】:

    • @Martijin Pieters 告诉我这怎么可能是相同的答案?见杰瑞的回答。这与我的答案完全不同。(比较代码 sn-p)在删除答案之前仔细观察。这就是为什么我再次发布相同的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多