在 CentOS 上运行 Swagger(无论是 Swagger UI、Swagger Editor,还是 Springfox / springdoc-openapi)报错,常见原因主要集中在 环境依赖、端口、权限、Java 版本、网络访问 等方面。下面按场景给你一个排查清单。
Swagger 相关组件(尤其是 Springfox、springdoc)对 JDK 版本敏感。
现象
NoClassDefFoundError、UnsupportedClassVersionError)解决
java -version
建议:
yum install java-11-openjdk-devel
Swagger UI 默认端口:
检查端口
netstat -tunlp | grep 8080
ss -tunlp | grep 8080
防火墙
firewall-cmd --list-all
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
如果是云服务器,还要放通 安全组
SELinux 会阻止 Java / Node 绑定端口或访问文件。
临时关闭测试
setenforce 0
如果好了,说明是 SELinux 问题:
getsebool -a | grep httpd
setsebool httpd_can_network_connect on -P
如果你是本地跑 Swagger Editor:
node -v
npm -v
常见错误:
node: command not foundnpm install 卡死解决:
curl -sL https://rpm.nodesource.com/setup_18.x | bash -
yum install -y nodejs
Swagger UI 默认从 CDN 加载:
https://cdn.jsdelivr.net
CentOS 无外网时:页面空白或 JS 报错
解决
resources| Spring Boot | Swagger |
|---|---|
| 2.6+ | ❌ Springfox 不稳定 |
| 2.7+ | ✅ springdoc-openapi |
| 3.x | ✅ springdoc-openapi |
推荐方案
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
访问:
http://ip:8080/swagger-ui.html
# 1. Java
java -version
# 2. 端口
ss -tunlp | grep 8080
# 3. 防火墙
firewall-cmd --list-all
# 4. SELinux
getenforce
# 5. 日志
journalctl -u your-service
你可以贴出:
cat /etc/redhat-release)我可以一步一步帮你精确到哪一行配置错了。