SpringBoot部署和前端连接问题解决的完整指南(net::ERR_CONNECTION_REFUSED)

 更新时间:2025年01月20日 08:40:36   作者:码农阿豪@新空间代码工作室  
在开发和部署 Spring Boot 应用时,可能会遇到各种问题,例如 JAR 文件无法运行、前端无法连接后端服务等,本文将详细总结这些问题的解决方法,帮助你顺利部署和运行 Spring Boot 应用,需要的朋友可以参考下

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部署和前端连接问题的资料请关注脚本之家其它相关文章!

相关文章

  • java项目中的多线程实践记录

    java项目中的多线程实践记录

    项目开发中对于一些数据的处理需要用到多线程,比如文件的批量上传,数据库的分批写入,大文件的分段下载等,主要涉及到多线程的一些知识,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下
    2021-11-11
  • SpringMVC中重定向model值的获取方式

    SpringMVC中重定向model值的获取方式

    这篇文章主要介绍了SpringMVC中重定向model值的获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java编码辅助工具Lombok用法详解

    Java编码辅助工具Lombok用法详解

    这篇文章主要介绍了Java编码辅助工具Lombok用法详解,可以使用Lombok来避免这种重复的操作,减少非核心代码的臃肿,提高编码效率,需要的朋友可以参考下
    2019-06-06
  • JAVA的反射机制你了解多少

    JAVA的反射机制你了解多少

    这篇文章主要为大家详细介绍了JAVA的反射机制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 解决springboot configuration processor对maven子模块不起作用的问题

    解决springboot configuration processor对maven子模块不起作用的问题

    这篇文章主要介绍了解决springboot configuration processor对maven子模块不起作用的问题,本文通过图文实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java ConcurrentHashMap实现线程安全的代码示例

    Java ConcurrentHashMap实现线程安全的代码示例

    众所周知ConcurrentHashMap是HashMap的多线程版本,HashMap 在并发操作时会有各种问题,而这些问题,只要使用ConcurrentHashMap就可以完美解决了,本文将给详细介绍ConcurrentHashMap是如何保证线程安全的
    2023-05-05
  • 如何解决java.net.BindException:地址已在使用问题

    如何解决java.net.BindException:地址已在使用问题

    当Zookeeper启动报错“java.net.BindException:地址已在使用”时,通常是因为指定的端口已被其他进程占用,解决这个问题需要按照以下步骤操作:首先,使用命令如lsof -i:2181找到占用该端口的进程号;其次,使用kill命令终止该进程
    2024-09-09
  • java实现多线程交替打印

    java实现多线程交替打印

    这篇文章主要为大家详细介绍了java实现多线程交替打印,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • MyBatis Generator去掉生成的注解

    MyBatis Generator去掉生成的注解

    这篇文章主要介绍了MyBatis Generator去掉生成的注解的相关资料,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • idea2019.1.4 鼠标放到方法上显示注解的实现操作

    idea2019.1.4 鼠标放到方法上显示注解的实现操作

    这篇文章主要介绍了idea2019.1.4 鼠标放到方法上显示注解的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论