“Linux 下 Swagger 报错”本身比较宽泛,常见原因有环境、配置、权限、依赖、端口、代码等几类。下面按最常见场景给你归纳,并给出排查思路。你可以对照看看是哪一种。
如果你用的是 Springfox Swagger / springdoc-openapi,常见报错:
/swagger-ui.html 报 404Failed to start bean 'documentationPluginsBootstrapper'java.lang.NullPointerExceptionAbstractMethodError / NoSuchMethodError| 原因 | 说明 |
|---|---|
| Spring Boot 版本不兼容 | Springfox 对 Spring Boot 3.x 不支持 |
| 缺少配置类 | 没有 @EnableSwagger2 或 OpenAPI 配置 |
| 路径被拦截 | 被 Spring Security 拦截 |
| 包扫描错误 | Swagger 扫不到 Controller |
| JDK 版本问题 | JDK 17+ 与旧 Swagger 不兼容 |
Spring Boot ≥ 2.6 / 3.x,推荐使用:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
访问地址:
http://ip:port/swagger-ui/index.html
| 原因 | 排查 |
|---|---|
| 端口未开放 | firewall-cmd / iptables |
| 只监听 127.0.0.1 | 配置成 0.0.0.0 |
| 没启动 | `ps -ef |
| 权限不足 | 非 root 启动 & 端口 <1024 |
netstat -tunlp | grep 8080
curl http://localhost:8080/swagger-ui.html
Connection refused127.0.0.1docker run -p 8080:8080 ...
应用配置:
server.address=0.0.0.0
Cannot find module '@nestjs/swagger'swagger.json 404npm install @nestjs/swagger swagger-ui-express
检查:
SwaggerModule.setup('api', app, document);
访问:
http://ip:port/api
getenforce
ls -Z
临时关闭(测试用):
setenforce 0
请你按这个顺序排查:
确认 Swagger 类型
看完整报错
journalctl -xe
# 或
docker logs 容器id
确认访问地址
curl确认端口 & 防火墙
firewall-cmd --list-ports
你可以直接把下面信息贴出来(越详细越好):
我可以直接帮你精准定位到具体原因并给出修改后的配置。