在 CentOS 上运行 Swagger 报错,原因可能很多,需要分情况处理。下面给你一个通用排查思路和常见解决方案。
CentOS 上常见的 Swagger 使用方式:
不同方式报错完全不同。
journalctl -xe
# 或
tail -f /var/log/messages
如果是 Java:
java -jar xxx.jar
看具体的 Exception。
Swagger UI 默认端口(如 8080、3000)被防火墙挡住。
# 查看端口
ss -lntp
# 开放端口(以 8080 为例)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
CentOS 默认开启 SELinux。
getenforce
如果是 Enforcing,可临时关闭测试:
setenforce 0
如确认是 SELinux 问题,建议配置策略而不是永久关闭。
Swagger 对 Java 版本敏感:
| Swagger 版本 | Java |
|---|---|
| springfox 2.x | Java 8 |
| springfox 3.x | Java 8/11 |
| springdoc | Java 11+ |
查看 Java:
java -version
Failed to start bean 'documentationPluginsBootstrapper'原因:Spring Boot 2.6+ 与 Springfox 不兼容
✅ 解决方式(任选):
spring:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
或 换成 springdoc-openapi(推荐):
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>2.3.0</version>
</dependency>
访问:/swagger-ui.html
/swagger-ui.html/swagger-ui.html 或 /swagger-ui/index.htmlEACCES: permission deniedsudo chown -R $USER /usr/local/lib/node_modules
或:
npm config set prefix ~/.npm
docker run -p 8080:8080 swaggerapi/swagger-ui
防火墙 & SELinux 同样要处理。
如果你愿意,可以把 完整报错日志 或 运行方式 发给我,例如:
我可以直接帮你定位到具体原因 ✅