SonarQube 5.6无法显示系统信息,请求故障排查
针对你遇到的SonarQube 5.6查看系统信息时触发的Could not initialize class sun.net.www.protocol.http.HttpURLConnection异常,我结合你使用的java-1.8.0-openjdk-1.8.0.151-1.b12.el6_9.x86_64版本,分析几个可能的原因和排查方向:
一、你提到的“JDK缺少相关Jar包”确实是可能的原因
sun.net.www.protocol.http.HttpURLConnection是JDK核心类,默认打包在rt.jar里(OpenJDK对应路径为jre/lib/rt.jar)。如果你的OpenJDK安装不完整——比如安装过程中文件损坏、被误删,或者系统类路径配置错误导致JVM找不到这个核心Jar包,就会触发这个初始化异常。
不过要注意:这个类是JDK最基础的网络核心类,正常的OpenJDK完整安装包不会缺失它,所以大概率是安装损坏或者类路径被干扰,而不是单纯的“缺少Jar包”。
二、OpenJDK 1.8.0_151版本的HttpURLConnection实现变更导致兼容性问题
你用的这个OpenJDK 8小版本比较老(2017年发布),Oracle/OpenJDK在后续的小版本中对HttpURLConnection的内部实现做过一些修复和调整。SonarQube 5.6依赖的ZK Framework版本可能和这个特定的老版本OpenJDK存在兼容性冲突——ZK在调用HttpURLConnection相关逻辑时,依赖了某些已被修改或移除的内部实现细节,从而触发初始化失败。
三、系统环境或SonarQube启动参数的干扰
- 如果你手动设置了
CLASSPATH环境变量,可能覆盖了JDK默认的核心类路径,导致JVM无法加载HttpURLConnection类; - SonarQube启动脚本中如果添加了自定义的JVM参数(比如
-Xbootclasspath),也可能干扰核心类的加载逻辑,引发异常。
排查建议
验证OpenJDK的完整性
运行以下命令检查核心类是否存在:jar tf $JAVA_HOME/jre/lib/rt.jar | grep sun/net/www/protocol/http/HttpURLConnection如果没有输出结果,说明你的OpenJDK安装包确实损坏,需要重新安装完整版本的OpenJDK 8。
更换JDK版本测试
尝试换成Oracle JDK 1.8同版本,或者更新OpenJDK到更高的小版本(比如1.8.0_202及以上),看异常是否消失。这能快速排查是否是版本兼容性问题。检查SonarQube启动参数
打开SonarQube的启动脚本(比如sonar.sh),查看是否有自定义的CLASSPATH、-Xbootclasspath等参数,暂时移除这些参数后重启SonarQube,验证问题是否解决。获取完整异常栈
你提供的日志被截断了,完整的异常栈能展示更详细的调用链(比如是ZK的哪个类触发的异常),这对定位具体冲突点非常有帮助。
内容的提问来源于stack exchange,提问作者Sinc

