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,以便生成可執(zhí)行的 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
確保輸出中包含類似以下內(nèi)容:
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)??赡艿脑虬ǚ掌魑磫印⒕W(wǎng)絡問題、跨域問題等。
解決方法
2.1 檢查服務器是否啟動
確保 Spring Boot 應用已經(jīng)成功啟動,并且正在監(jiān)聽 8080 端口。
在服務器上運行以下命令,檢查是否有進程正在監(jiān)聽
8080端口:
netstat -tuln | grep 8080
如果輸出為空,說明服務器未啟動或未監(jiān)聽
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 應用運行在遠程服務器上,確保瀏覽器訪問的是服務器的公網(wǎng) IP 或域名,例如
http://your-server-ip:8080。
2.3 檢查跨域問題
如果前端頁面和后端服務運行在不同的域名或端口上,可能會觸發(fā)瀏覽器的跨域限制。
在后端服務中啟用跨域支持??梢栽?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 檢查網(wǎng)絡連通性
確保客戶端和服務器之間的網(wǎng)絡連接正常。
- 在客戶端機器上,使用
ping命令測試服務器的連通性:
ping your-server-ip
- 使用
telnet命令測試端口是否開放:
telnet your-server-ip 8080
- 如果連接失敗,說明網(wǎng)絡或防火墻配置有問題。
2.5 檢查防火墻和安全組
確保服務器的防火墻或安全組允許 8080 端口的訪問。
- 如果使用云服務器(如阿里云、騰訊云),檢查安全組規(guī)則,確保
8080端口對外開放。
3. HTTPS 和 HTTP 混用問題
問題描述
在部署 Spring Boot 應用時,可能會遇到以下錯誤:
java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x060xe00x010x000x060xdc0x030x030x110x060xb40x870xd80x060x93a0x0f0x9e0x8d0xaa0xb6^c0xe00x910xe70xed0x160xf20x0ce0x8dY0x82oRm0x0b0xb1' ]. HTTP method names must be tokens
問題原因
這個錯誤通常是由于客戶端嘗試通過 HTTP 協(xié)議訪問 HTTPS 端口,或者服務器配置了 HTTPS,但客戶端使用了 HTTP。
解決方法
3.1 檢查客戶端請求
確??蛻舳耸褂谜_的協(xié)議(HTTP 或 HTTPS)和端口訪問服務器。
- 如果服務器配置了 HTTPS,客戶端應使用
https://協(xié)議。 - 如果服務器僅支持 HTTP,客戶端應使用
http://協(xié)議。
3.2 檢查服務器端口配置
確保服務器監(jiān)聽的端口與客戶端請求的端口一致。
- 如果服務器配置了 HTTPS,確保客戶端訪問的是 HTTPS 端口(默認
443)。 - 如果服務器僅支持 HTTP,確保客戶端訪問的是 HTTP 端口(默認
8080)。
3.3 檢查代理或負載均衡器配置
如果使用了代理或負載均衡器(如 Nginx、HAProxy),確保配置正確。
- 如果啟用了 HTTPS,確保代理或負載均衡器正確轉(zhuǎn)發(fā) HTTPS 請求。
4. 總結
在開發(fā)和部署 Spring Boot 應用時,可能會遇到各種問題。通過檢查服務器配置、網(wǎng)絡連通性、跨域問題等,可以有效解決這些問題。本文總結了常見的錯誤及其解決方法,幫助你順利部署和運行 Spring Boot 應用。
以上就是SpringBoot部署和前端連接問題解決的完整指南(net::ERR_CONNECTION_REFUSED)的詳細內(nèi)容,更多關于SpringBoot部署和前端連接問題的資料請關注腳本之家其它相關文章!
相關文章
解決springboot configuration processor對maven子模塊不起作用的問題
這篇文章主要介紹了解決springboot configuration processor對maven子模塊不起作用的問題,本文通過圖文實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Java?ConcurrentHashMap實現(xiàn)線程安全的代碼示例
眾所周知ConcurrentHashMap是HashMap的多線程版本,HashMap?在并發(fā)操作時會有各種問題,而這些問題,只要使用ConcurrentHashMap就可以完美解決了,本文將給詳細介紹ConcurrentHashMap是如何保證線程安全的2023-05-05
如何解決java.net.BindException:地址已在使用問題
當Zookeeper啟動報錯“java.net.BindException:地址已在使用”時,通常是因為指定的端口已被其他進程占用,解決這個問題需要按照以下步驟操作:首先,使用命令如lsof -i:2181找到占用該端口的進程號;其次,使用kill命令終止該進程2024-09-09
idea2019.1.4 鼠標放到方法上顯示注解的實現(xiàn)操作
這篇文章主要介紹了idea2019.1.4 鼠標放到方法上顯示注解的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

