Oracle JDK 11.0.16+11-LTS-199的sun.security.ssl源码及行号匹配问题
问题解决思路
针对你遇到的Oracle JDK 11.0.16+11-LTS-199堆栈行号与源码不匹配、sun.security.ssl源码缺失的问题,给你几个可行的解决方向:
行号不匹配的核心原因:Oracle JDK是在OpenJDK基础上叠加自有补丁集发布的,你找到的
jdk-11.0.16+8是OpenJDK的官方标签版本,而Oracle的11.0.16+11是在这个版本之上又打了3个私有补丁,代码行数产生偏移,自然导致堆栈行号和OpenJDK源码对不上。获取对应版本的完整源码:Oracle JDK默认的
src.zip不包含sun.*这类内部API的源码,你需要去Oracle官方的JDK源码发布渠道,找到对应11.0.16+11-LTS版本的完整源码包,里面会包含sun.security.ssl的代码。临时应急方案:如果一时找不到对应源码,用反编译工具(比如jd-gui)打开JDK安装目录下
jmods/java.base.jmod(需先解压)里的sun/security/ssl/SSLSocketImpl.class,反编译后就能看到和堆栈行号完全对应的代码,可直接定位问题逻辑。
另外你提到BaseSSLSocketImpl和GitHub上的内容匹配,是因为这个类在Oracle的补丁集里没有被修改,所以行号一致。
内容的提问来源于stack exchange,提问作者John Gregg
相关产品推荐
相关产品推荐

