Eclipse : clientBuilder.sslSocketFactory 在 JDK 9+ 上不受支持



我在Eclipse oxygen 4.7.0,java 1.8上收到此错误

clientBuilder.sslSocketFactory 在 JDK 9+ 上不受支持

与日食有关,专家..尝试更新 Maven : Alt+f5 模块 okhttp3 尝试连接..解析/处理聚甲醛时

我根本没有JDK9。 查看了所有其他关于stackoverflow的类似报告,没有一个是相关的。

你可以在JDK8 的 Eclipse bug 517113 中找到类似的问题。

错误调用堆栈指示使用 OpenJDK 编译的库的外部依赖项

如此处所示,还要检查 Eclipse 中的 JDK 声明

我更改了使用 JAVA_HOME 作为 SonarScanner 包附带的 JRE 的代码.
一旦我将其更改为默认JAVA_HOME,它就开始正常工作。

其他可能的原因:错误的依赖,如PR 3066或此问题所示。

我认为您正在使用JDK 9运行Eclipse Oxygen。

如果你不想,那么我有一个解决方案。

通过添加-vm参数.ini更新日食/日食

-startup
plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.700.v20180518-1200
-product
org.eclipse.epp.package.jee.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:/Program Files/Java/jdk1.8.0_251/bin
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=1.8
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms256m
-Xmx1024m
--add-modules=ALL-SYSTEM

这个.ini文件来自我最新的日食。其他版本可能会有所不同。

这将强制 eclipse 从您添加的 JDK 开始。

注意:-Dosgi.requiredJavaVersion=1.8将为您提供有关 eclipse 可以支持的 Java 版本的信息。

如果有人在运行 Azul 的 zulu8 打开 jdk 时遇到这个问题,请尝试将 zulu8 jdk 的 3-4 个版本放在最新版本后面。这对我有用。

检查您的 OkHttpClient.Builder((,更改代码

sslSocketFactory(SSLSocketFactory sslSocketFactory)

sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)

例如:

// define sslContext ...
new OkHttpClient.Builder().sslSocketFactory(sslContext.getSocketFactory(), new JEEX509TrustManager()).build();

然后一切都会好起来的。

Java 8有两个版本,如下所示:

  1. Java SE 8(8u211 及更高版本(
  2. Java SE 8(8u202 及更早版本(

因此,如果您安装了"Java SE 8(8u211 及更高版本(",您将收到错误:在 eclipse oxygen 中的 JDK 9+ 上不支持 clientBuilder.sslSocketFactory。 为避免此错误,请从以下链接安装"Java SE 8(8u202 及更早版本("https://www.oracle.com/java/technologies/downloads/archive/

我按照以下步骤删除了此错误: 早期代码:

OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
builder.sslSocketFactory(sslSocketFactory);

新代码:

OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
X509TrustManager trustManager = new X509DeployTrustManager();
builder.sslSocketFactory(sslSocketFactory);

最新更新