必须用JDK 11+启动SkyWalking OAP,Web UI可用JDK 8但不建议混用;storage配置需正确设置selector为elasticsearch且clusterNodes格式为host:port;webapp需检查server.host、端口及防火墙;Agent接入前须确保gRPC端口11800连通且OAP真正启动完成。

必须用 JDK 11+ 启动 SkyWalking OAP,低于这个版本会直接报 UnsupportedClassVersionError 并退出;Web UI 可以用 JDK 8,但不建议混用。
确认 JDK 版本并切换到 JDK 11+
运行 java -version 查看当前 JDK。如果输出是 1.8.0_* 或 10.*,OAP 就起不来。v9.4.0 要求最低 JDK 11(不是“支持”,是硬性门槛)。
- 不要依赖系统自带的 OpenJDK 8 —— 即使
yum install java成功,也大概率是错的版本 - 推荐下载官方 Oracle JDK 11 或 Eclipse Temurin 11(
jdk-11.0.*_*.tar.gz),解压后设JAVA_HOME指向它 - 验证方式:在
bin/oapService.sh开头加一行echo $JAVA_HOME,再执行,确保路径指向 JDK 11 的根目录
storage 配置写错位置会导致 OAP 启动后立刻退出
很多人改了 config/application.yml 里的 storage 块,但没注意到顶层还有个 selector 字段——它才是决定用哪个存储的开关。
- 要用 Elasticsearch,必须把
storage: selector: ${SW_STORAGE:elasticsearch}这行的值设为elasticsearch(不能是es、elasticsearch7或留空) -
elasticsearch下的clusterNodes必须是host:port格式,例如192.168.1.100:9200;多个节点用英文逗号分隔,末尾不能有逗号 - 如果 ES 开了认证,得额外配
userName和password,否则 OAP 日志里会出现401 Unauthorized且不报具体错误
webapp 启动失败常见于端口或 IP 绑定问题
webappService.sh 启动后访问 http://ip:8080 显示连接被拒绝,大概率不是服务没起来,而是它根本没监听你期望的地址。
- 检查
webapp/webapp.yml中的server.host:默认是0.0.0.0,但如果写成127.0.0.1,外部就无法访问 -
server.port改完后,别忘了检查防火墙:firewall-cmd --list-ports看 8080/8888 是否放行 - 如果和 ES 共用一台机器,注意 ES 默认占 9200,SkyWalking Web UI 别也设成 9200 —— 端口冲突不会报错,但 webapp 进程实际没起来
Agent 接入后看不到数据?先查 OAP 的 gRPC 端口连通性
Spring Boot 应用加了 -javaagent:/path/to/agent/skywalking-agent.jar,但 SkyWalking UI 里始终没服务名,第一反应不该是改 agent.config,而是确认网络链路。
- OAP 默认监听
11800(gRPC)和12800(HTTP),Agent 必须能直连前者;用telnet 192.168.1.100 11800测试 -
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES的值必须和 OAP 所在机器的实际 IP 一致,不能写localhost或127.0.0.1(除非 Agent 和 OAP 在同一台) - Agent 日志默认输出到应用当前目录的
logs/skywalking-api.log,里面如果有Failed to connect to collector,基本就是网络或端口问题
最容易被忽略的是:OAP 启动日志里出现 Starting OAP Server 不代表它已就绪,要看到 org.apache.skywalking.oap.server.starter.OAPServerBootstrap 后面跟着 started 才算真正跑起来;在此之前所有 Agent 发的数据都会被丢弃,且不提示。


















