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

Oracle 19c中OkHttp3 4.11.0 sslSocketFactory编译报错解决

OkHttp3 4.11.0 信任所有证书编译报错解决:cannot find symbol

针对你在Oracle 19c环境下编译嵌入Java代码时,调用builder1.sslSocketFactory(trustAllSslSocketFactory, (X509TrustManager) trustAllCerts[0])出现的“cannot find symbol”错误,可按以下步骤排查解决:

  • 确认依赖完整性
    确保Oracle 19c的Java环境中已加载OkHttp 4.11.0及其依赖(如Okio)的jar包。若为嵌入式Java代码(如JDBC存储过程),需用loadjava命令将相关jar包导入Oracle的类路径,避免因缺失依赖导致方法无法识别。

  • 修正方法调用的类型匹配
    OkHttp 4.x的sslSocketFactory方法要求两个参数:SSLSocketFactory实例和X509TrustManager实例。需确保:

    1. 显式导入所有相关类:javax.net.ssl.SSLSocketFactory、javax.net.ssl.X509TrustManager、javax.net.ssl.SSLContext等,避免编译时类型缺失。
    2. 将类型转换结果赋值给变量后再传入,帮助编译器识别类型:
      X509TrustManager trustManager = (X509TrustManager) trustAllCerts[0];
      builder1.sslSocketFactory(trustAllSslSocketFactory, trustManager);
      
  • 检查自定义SSLSocketFactory的正确性
    确认你的trustAllSslSocketFactory实例创建过程无错误,标准实现示例:

    TrustManager[] trustAllCerts = new TrustManager[]{
        new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) {}
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) {}
            @Override
            public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
        }
    };
    
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, trustAllCerts, new SecureRandom());
    SSLSocketFactory trustAllSslSocketFactory = sslContext.getSocketFactory();
    
  • 验证Oracle 19c Java环境版本
    OkHttp 4.11.0要求Java 8及以上版本,确认Oracle 19c内置JVM版本符合要求,过低的Java版本可能无法兼容OkHttp的方法签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:12