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实例。需确保:- 显式导入所有相关类:
javax.net.ssl.SSLSocketFactory、javax.net.ssl.X509TrustManager、javax.net.ssl.SSLContext等,避免编译时类型缺失。 - 将类型转换结果赋值给变量后再传入,帮助编译器识别类型:
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
相关产品推荐
相关产品推荐

