【问题标题】:Eclipse : clientBuilder.sslSocketFactory not supported on JDK 9+Eclipse:JDK 9+ 不支持 clientBuilder.sslSocketFactory
【发布时间】:2020-05-19 19:24:27
【问题描述】:

我在 Eclipse 氧气 4.7.0、java 1.8 上遇到此错误

JDK 9+ 不支持 clientBuilder.sslSocketFactory

与 Eclipse、maven ..trying 更新 Maven 相关:Alt+f5 模块 okhttp3 在解析/处理 pom 时尝试连接..

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

【问题讨论】:

  • 解决了吗?
  • 没有 .. 安装了新的 Eclipse 版本;(
  • 对我来说,我从 1.8.0_251 降级到 1.8.0_241 并且能够工作。
  • @Oxnard 嗨,你的系统上安装了 jdk 9 吗?
  • @Oxnard 您想使用哪个 java 版本运行 eclipse?

标签: java eclipse maven


【解决方案1】:

您可以在 Eclipse bug 517113 中找到类似的问题,使用 JDK8。

错误调用堆栈指示library compiled with OpenJDK的外部依赖

As seen here,还要检查 Eclipse 中的 JDK 声明

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

其他可能的原因:错误的依赖关系,如PR 3066this question 所示。

【讨论】:

    【解决方案2】:

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

    如果您不想这样做,那么我有一个解决方案。

    通过添加-vm 参数更新eclipse/eclipse.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。其他版本可能会有所不同。

    这将强制 eclipse 以您添加的 JDK 启动。

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

    【讨论】:

    • 这可能比我的回答更准确。赞成。
    • 对我来说,这个错误出现在 pom.xml 中,现在通过在 eclipse.ini 中提供 vm 参数来解决。赞成的答案。
    【解决方案3】:

    如果有人在运行 Azul 的 zulu8 open jdk 时遇到此问题,请尝试使用 zulu8 jdk 的最新版本,例如 3-4 个版本。这对我有用。

    【讨论】:

      【解决方案4】:

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

      sslSocketFactory(SSLSocketFactory sslSocketFactory)
      

      sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager)
      

      例如:

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

      然后一切都会好起来的。

      【讨论】:

        【解决方案5】:

        Java 8 有以下两个版本:

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

        所以如果你安装了“Java SE 8 (8u211 and later)”你会收到错误:clientBuilder.sslSocketFactory not supported on JDK 9+ in eclipse oxygen。 为避免此错误,请从以下链接安装“Java SE 8(8u202 及更早版本)” https://www.oracle.com/java/technologies/downloads/archive/

        【讨论】:

          【解决方案6】:

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

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

          新代码:

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

          【讨论】:

            猜你喜欢
            • 2020-12-27
            • 1970-01-01
            • 1970-01-01
            • 2021-02-10
            • 2014-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-31
            相关资源
            最近更新 更多