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

自定义Java运行镜像报SSLHandshakeException非自定义运行正常如何解决

问题原因

该问题确实是自定义JRE构建时缺少必要模块导致的。普通完整JRE默认内置了所有加密相关模块,所以运行无异常。
jdeps --list-deps仅能扫描代码的静态显式依赖,无法识别SSL/TLS握手过程中动态加载的加密服务实现类(SPI机制加载),你仅添加java.base模块的自定义运行环境缺少核心加密算法实现,导致HTTPS握手失败。

缺失的模块

你需要额外补充jdk.crypto.ec模块:
该模块提供了椭圆曲线加密算法的实现,目前全球绝大多数HTTPS站点的TLS握手都依赖ECDHE、ECDSA这类椭圆曲线算法,而java.base模块仅包含SSL相关的接口定义,没有内置对应算法实现,这是你报错的核心原因。
如果后续涉及非UTF-8编码的响应解析,还可以补充jdk.charsets模块扩展编码支持。

修复方案

修改你bat脚本中的jlink构建命令,在--add-modules参数后补充缺失的模块即可:

:: 原命令
:: jlink --add-modules java.base --output myruntime
:: 修改后的命令
jlink --add-modules java.base,jdk.crypto.ec --output myruntime

如果还有其他运行时SPI加载类的缺失问题,可以给jlink添加--bind-services参数,自动扫描绑定所有服务提供者对应的模块:

jlink --add-modules java.base,jdk.crypto.ec --bind-services --output myruntime

修改后重新构建自定义运行环境,即可正常发起HTTPS请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:39:03