pom.xml(Maven)或build.gradle(Gradle)中包含正确版本的Swagger依赖(如springfox-swagger2、springfox-swagger-ui)。例如,Spring Boot 2.x版本常用springfox-swagger2:2.9.2、springfox-swagger-ui:2.9.2;若版本不兼容(如Spring Boot 3.x与旧版Swagger冲突),会导致启动失败。java -version检查Java版本,确保JAVA_HOME环境变量指向正确路径。SwaggerConfig.java),并添加@Configuration、@EnableSwagger2注解。若未配置或注解遗漏,Swagger无法初始化。示例配置:@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any()) // 扫描所有接口
.paths(PathSelectors.any()) // 扫描所有路径
.build();
}
}
/api),需在配置类中添加pathMapping,并在application.properties中设置springfox.documentation.swagger-ui.base-path。例如:.pathMapping("/api") // 映射到/api路径
springfox.documentation.swagger-ui.base-path=/api
否则会导致Swagger UI无法找到接口文档。netstat -tulnp | grep <端口号>检查。若端口被占用,需修改应用端口或停止占用进程。firewalld或iptables,需开放应用端口。例如,开放8080端口:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # firewalld
sudo firewall-cmd --reload
或使用iptables:sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo service iptables save
否则会导致外部无法访问Swagger UI。dist目录)或应用日志目录权限不足,会导致无法读取或写入。需赋予应用用户(如tomcat、root)读写权限:chmod -R 755 /opt/swagger-ui/dist # 示例:赋予dist目录读写权限
Enforcing模式,可能阻止应用访问网络或文件。可通过getenforce检查状态,临时关闭SELinux:sudo setenforce 0
或修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统。systemctl status <服务名>(如systemctl status nginx、systemctl status my-spring-boot-app)检查服务状态,若未启动需使用systemctl start <服务名>启动。若服务崩溃,需查看应用日志(如/var/log/my-spring-boot-app.log)定位错误原因(如端口冲突、数据库连接失败)。location /swagger-ui/ {
proxy_pass http://localhost:8080/swagger-ui/; # 代理到应用端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
需确保proxy_pass指向正确的应用地址和端口,且路径匹配(如/swagger-ui/与应用的路径映射一致)。NoClassDefFoundError表示依赖缺失,PortAlreadyInUse表示端口占用)。若以上步骤无法解决问题,需提供具体错误日志(如应用启动日志中的Exception信息),以便进一步定位。