Maven构建报错:clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+ 解决方案求助
解决'clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+'错误(JDK8环境下)
看起来你遇到了一个有点矛盾的问题——明明本地配置的是JDK8,却触发了JDK9+才会出现的SSL方法不支持提示。结合你的环境和POM配置,我整理了几个针对性的解决方案:
1. 确认Eclipse项目的JRE配置是否正确
这是最常见的触发原因:Eclipse可能默认用了JDK9+的JRE来构建项目,哪怕你本地装的是JDK8。
- 右键你的项目 → Properties → Java Build Path → Libraries
- 检查
JRE System Library是否指向JDK8,要是不对就点击Edit选择正确的JDK8安装路径
- 检查
- 切换到Java Compiler选项卡,确保Compiler compliance level设置为
1.8,并且勾选Use compliance from execution environment on the 'Java Build Path'
2. 检查Maven运行时的JDK版本
Eclipse里的Maven可能没使用你指定的JDK8:
- 打开Window → Preferences → Maven → Installations
- 选中你正在用的Apache Maven 3.0.5,点击Edit,确认JRE选择的是JDK8
- 也可以在运行Maven构建时临时指定:右键项目 → Run As → Run Configurations → 找到你的Maven Build配置 → 切换到JRE选项卡,选择JDK8
3. 升级rest-assured依赖版本
你当前用的rest-assured:3.0.6依赖的Apache HttpClient版本存在JDK兼容性问题,这个版本的HttpClient在JDK8环境下可能会错误触发JDK9+的API检查。建议升级到更稳定的版本:
修改POM中的rest-assured依赖:
<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>4.4.1</version> </dependency>
这个版本对JDK8的兼容性更好,能避免这类SSL相关的错误。
4. 强制指定兼容的Apache HttpClient版本
如果不想升级rest-assured,可以在POM中直接添加HttpClient的依赖,强制使用兼容JDK8的版本(比如4.5.13),覆盖rest-assured默认依赖的版本:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
错误原因补充
这个错误本质上是因为clientBuilder.sslSocketFactory(SSLSocketFactory)方法在JDK9+中被废弃,且引入了新的替代方法。但你用JDK8本该不会触发这个提示,大概率是构建环境的JRE版本不匹配,或者依赖库的版本冲突导致代码错误调用了JDK9+的API逻辑。
内容的提问来源于stack exchange,提问作者Shrutika Suryavanshi
相关产品推荐
相关产品推荐

