SpringBoot部署和前端连接问题解决的完整指南(net::ERR_CONNECTION_REFUSED)
作者:码农阿豪@新空间代码工作室
1. JAR 文件无法运行:no main manifest attribute
问题描述
在运行 Spring Boot 生成的 JAR 文件时,可能会遇到以下错误:
no main manifest attribute, in ShunFengServer-0.0.1-SNAPSHOT.jar
问题原因
这个错误表示 JAR 文件中缺少 Main-Class 属性,导致 Java 无法找到程序的入口点(即 main 方法)。
解决方法
1.1 检查 pom.xml 配置
确保在 pom.xml 中正确配置了 spring-boot-maven-plugin,以便生成可执行的 JAR 文件。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.7.0</version> <!-- 使用适合你的 Spring Boot 版本 --> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
1.2 重新打包项目
在项目根目录下运行以下命令,重新生成 JAR 文件:
mvn clean package
生成的 JAR 文件会位于 target
目录中。
1.3 检查生成的 JAR 文件
使用以下命令检查生成的 JAR 文件是否包含 Main-Class
属性:
unzip -p ShunFengServer-0.0.1-SNAPSHOT.jar META-INF/MANIFEST.MF
确保输出中包含类似以下内容:
Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.douyin.shunfengserver.ShunFengServerApplication
1.4 手动指定主类运行
如果重新打包后仍然缺少 Main-Class
属性,可以手动指定主类运行 JAR 文件:
java -cp ShunFengServer-0.0.1-SNAPSHOT.jar com.douyin.shunfengserver.ShunFengServerApplication
2. 前端无法连接后端服务:net::ERR_CONNECTION_REFUSED
问题描述
在浏览器中访问前端页面时,可能会遇到以下错误:
Failed to load resource: net::ERR_CONNECTION_REFUSED
问题原因
这个错误表示浏览器无法连接到指定的服务器地址(127.0.0.1:8080
)。可能的原因包括服务器未启动、网络问题、跨域问题等。
解决方法
2.1 检查服务器是否启动
确保 Spring Boot 应用已经成功启动,并且正在监听 8080
端口。
在服务器上运行以下命令,检查是否有进程正在监听
8080
端口:
netstat -tuln | grep 8080
如果输出为空,说明服务器未启动或未监听
8080
端口。启动 Spring Boot 应用:
java -jar ShunFengServer-0.0.1-SNAPSHOT.jar
2.2 检查服务器地址
确保浏览器访问的地址正确。
- 如果 Spring Boot 应用运行在本地,确保浏览器访问的是
http://127.0.0.1:8080
或http://localhost:8080
。 - 如果 Spring Boot 应用运行在远程服务器上,确保浏览器访问的是服务器的公网 IP 或域名,例如
http://your-server-ip:8080
。
2.3 检查跨域问题
如果前端页面和后端服务运行在不同的域名或端口上,可能会触发浏览器的跨域限制。
在后端服务中启用跨域支持。可以在 Spring Boot 中添加以下配置:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") // 允许所有域名访问 .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的 HTTP 方法 .allowedHeaders("*") // 允许所有请求头 .allowCredentials(true) // 允许携带凭证(如 Cookie) .maxAge(3600); // 预检请求缓存时间 } }
2.4 检查网络连通性
确保客户端和服务器之间的网络连接正常。
- 在客户端机器上,使用
ping
命令测试服务器的连通性:
ping your-server-ip
- 使用
telnet
命令测试端口是否开放:
telnet your-server-ip 8080
- 如果连接失败,说明网络或防火墙配置有问题。
2.5 检查防火墙和安全组
确保服务器的防火墙或安全组允许 8080
端口的访问。
- 如果使用云服务器(如阿里云、腾讯云),检查安全组规则,确保
8080
端口对外开放。
3. HTTPS 和 HTTP 混用问题
问题描述
在部署 Spring Boot 应用时,可能会遇到以下错误:
java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x060xe00x010x000x060xdc0x030x030x110x060xb40x870xd80x060x93a0x0f0x9e0x8d0xaa0xb6^c0xe00x910xe70xed0x160xf20x0ce0x8dY0x82oRm0x0b0xb1' ]. HTTP method names must be tokens
问题原因
这个错误通常是由于客户端尝试通过 HTTP 协议访问 HTTPS 端口,或者服务器配置了 HTTPS,但客户端使用了 HTTP。
解决方法
3.1 检查客户端请求
确保客户端使用正确的协议(HTTP 或 HTTPS)和端口访问服务器。
- 如果服务器配置了 HTTPS,客户端应使用
https://
协议。 - 如果服务器仅支持 HTTP,客户端应使用
http://
协议。
3.2 检查服务器端口配置
确保服务器监听的端口与客户端请求的端口一致。
- 如果服务器配置了 HTTPS,确保客户端访问的是 HTTPS 端口(默认
443
)。 - 如果服务器仅支持 HTTP,确保客户端访问的是 HTTP 端口(默认
8080
)。
3.3 检查代理或负载均衡器配置
如果使用了代理或负载均衡器(如 Nginx、HAProxy),确保配置正确。
- 如果启用了 HTTPS,确保代理或负载均衡器正确转发 HTTPS 请求。
4. 总结
在开发和部署 Spring Boot 应用时,可能会遇到各种问题。通过检查服务器配置、网络连通性、跨域问题等,可以有效解决这些问题。本文总结了常见的错误及其解决方法,帮助你顺利部署和运行 Spring Boot 应用。
以上就是SpringBoot部署和前端连接问题解决的完整指南(net::ERR_CONNECTION_REFUSED)的详细内容,更多关于SpringBoot部署和前端连接问题的资料请关注脚本之家其它相关文章!