Spring Boot的開發工具(DevTools)模塊中的熱更新特性導致的問題

問題:
????????java.lang.ClassCastException: class ????????cn.best.scholarflow.framework.system.domain.entity.SysUser cannot be cast to class cn.best.scholarflow.framework.system.domain.entity.SysUser (cn.best.scholarflow.framework.system.domain.entity.SysUser is in unnamed module of loader 'app'; cn.best.scholarflow.framework.system.domain.entity.SysUser is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @79752146)
????????截圖無法顯示全部的錯誤

????????先說一說遇到的什么問題

????????你遇到的問題是由于Spring Boot的開發工具(DevTools)模塊中的熱更新特性導致的。當你在開發環境中啟用了spring-boot-devtools,它會創建一個額外的類加載器來支持熱部署功能,這允許你在不重啟整個應用程序的情況下重新加載更改過的類和資源。然而,這種機制有時會導致類加載問題,比如你遇到的ClassCastException異常。?

錯誤原因

????????這個問題的根本原因是RestartClassLoader和應用程序默認類加載器之間的沖突。當你的應用運行時,RestartClassLoader用于加載一些特定的類,而其他類則由默認的應用程序類加載器加載。如果這兩個類加載器都加載了同一個類(例如SysUser),即使它們來自相同的包路徑,Java也會認為它們是不同的類型,因為每個類加載器加載的類被視為獨立的實體。因此,嘗試將一個類轉換為另一個會導致ClassCastException

解決方案

????????為了防止此類問題的發生,你可以通過禁用spring-boot-devtools的自動重啟功能來解決問題。具體步驟如下:

打開IDEA:啟動IntelliJ IDEA并打開你的項目。

編輯配置:點擊頂部菜單欄的Run,然后選擇Edit Configurations...

修改選項:在彈出的窗口中,選擇你正在使用的運行配置,然后點擊左下角的Modify options按鈕。

添加VM選項:在彈出的子菜單中找到Add VM options,點擊它。

輸入禁用命令:在出現的文本框中輸入以下內容以禁用自動重啟

-Dspring.devtools.restart.enabled=false

  1. 應用設置:完成上述設置后,點擊Apply按鈕保存更改,然后點擊OK關閉窗口。

????????通過以上設置,spring-boot-devtools的熱更新特性將被禁用,從而避免了因類加載器沖突而導致的ClassCastException。不過,請注意,禁用此功能后,代碼更改將不再自動觸發應用重啟,你需要手動重啟應用以查看更改效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64726.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

異常與中斷(上)

文章目錄 一、異常與中斷的概念引入與處理流程1.1 生活中的中斷1.2 母親如何處理中斷1.3 ARM系統中異常與中斷處理流程 二、ARM架構中異常與中斷的處理2.1 處理流程2.2 cortex M3/M42.2.1 M3/M4的向量表2.2.2 M3/M4的異常/中斷處理流程 2.3 cortex A72.3.1 A7的向量表2.3.2 A7的…

Zabbix 監控平臺 添加監控目標主機

Zabbix監控平臺是一個企業級開源解決方案,用于分布式系統監視和網絡監視。它由Zabbix Server和可選組件Zabbix Agent組成,通過C/S模式(客戶端-服務器模型)采集數據,并通過B/S模式(瀏覽器-服務器模型&#x…

游戲關卡設計的常用模式

游戲關卡分為很多種,但常用的有固定套路,分為若干種類型。 關卡是主角與怪物、敵方戰斗的場所,包括裝飾物、通道。 單人游戲的關卡較小,偏線性; 聯機/MMO的關卡較大,通道多,自由度高&#xf…

【容器化技術 Docker 與微服務部署】詳解

容器化技術 Docker 與微服務部署 一、容器化技術概述 (一)概念 容器化技術是一種操作系統級別的虛擬化方法,它允許將應用程序及其依賴項(如運行時環境、系統工具、庫等)打包成一個獨立的、可移植的單元,這…

TypeScript 后端開發中的熱重載編譯處理

在一些除了nest框架外的一些其他nodejs框架中沒有提供對ts編譯和熱重載,如果使用typescript我們需要自己進行配置。 方法一(推薦) 使用bun運行環境(快)。注:一些不是使用js,ts代碼編寫的第三方…

QT集成IntelRealSense雙目攝像頭3,3D顯示

前兩篇文章,介紹了如何繼承intel realsense相機和opengl。 這里介紹如何給深度數據和色彩數據一塊顯示到opengl里面。 首先,需要了解深度數據和彩色數據是如何存儲的。先說彩色數據。彩色圖像一般都是RGB,也就是每個像素有三個字節&#xf…

Postman[4] 環境設置

作用:不同的環境可以定義不同的參數,在運行請求時可以根據自己的需求選擇需要的環境 1.創建Environment 步驟: Environment-> ->命名->添加環境變量 2.使用Environment 步驟:Collection- >右上角選擇需要的環境

【合并區間】

問題 以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。 請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。示例 1: 輸入:intervals …

SpringBoot_第二天

SpringBoot_第二天 學習目標 Mybatis整合&數據訪問 使用SpringBoot開發企業項目時,持久層數據訪問是前端頁面數據展示的基礎,SpringBoot支持市面上常見的關系庫產品(Oracle,Mysql,SqlServer,DB2等)對應的相關持久層框架,當然除了對于關系…

SparseViT:基于稀疏編碼Transformer的非語義中心、參數高效的圖像篡改定位

摘要 https://arxiv.org/pdf/2412.14598 非語義特征或語義無關特征,與圖像上下文無關但對圖像篡改敏感,被認為是圖像篡改定位(IML)的重要證據。由于無法獲得人工標簽,現有工作依賴于手工方法提取非語義特征。手工非語…

Redisson 分布式鎖獲取tryLock和lock的區別

問題 boolean isLock lock.tryLock(10, 30, TimeUnit.SECONDS); boolean isLock lock.lock(30, TimeUnit.SECONDS); boolean isLock lock.lock(); 三者的區別?? 這三個方法都是用于獲取 Redisson 分布式鎖的,但它們在獲取鎖的方式和行為…

【git】git生成rsa公鑰的方法

git生成rsa公鑰的方法 一,簡介二,操作方法三,總結 一,簡介 在工作的過程中,經常需要生成rsa的密鑰,然后提供給別人,然后別人給你開通代碼下載權限。本文介紹如何在本地生成rsa的密鑰供參考。 …

Zookeeper模式安裝Kafka(含常規、容器兩種安裝方式)

一、#創作靈感# 公司使用Kafka的軟件項目較多,故寫技術筆記鞏固知識要點 二、軟件環境 - Kafka 3.9.0 官方下載地址:Kafka 3.9.0 - ZooKeeper 3.9.3 官方下載地址:ZooKeeper 3.9.3 - Docker Desktop 4.37 容器圖形化工具 官方下載地址…

7.傅里葉級數練習題

7.傅里葉級數練習題 設函數&#xff1a; f ( x ) { ? x , 0 ≤ x ≤ 1 2 , 2 ? 2 x , 1 2 < x < 1 , f(x) \begin{cases} -x, & 0 \leq x \leq \frac{1}{2}, \\ 2 - 2x, & \frac{1}{2} < x < 1, \end{cases} f(x){?x,2?2x,?0≤x≤21?,21?<x&…

【高項】信息系統項目管理師(二)項目管理概論

一、PMBOK的發展 項目管理知識體系&#xff08;PMBOK&#xff09;是由美國項目管理協會&#xff08;PMI&#xff09;開發的一套描述項目管理專業范圍的知識體系&#xff0c;包含了對項目管理所需的知識、技能和工具的描述。 二、項目基本要素 2.1 項目基礎 項目是為提供一項…

C++設計模式:狀態模式(自動售貨機)

什么是狀態模式&#xff1f; 狀態模式是一種行為型設計模式&#xff0c;它允許一個對象在其內部狀態發生改變時&#xff0c;動態改變其行為。通過將狀態相關的邏輯封裝到獨立的類中&#xff0c;狀態模式能夠將狀態管理與行為解耦&#xff0c;從而讓系統更加靈活和可維護。 通…

【Pytorch實用教程】循環神經網絡中使用dropout需要注意的問題

文章目錄 問題解答警告的具體含義解決方案示例代碼總結問題 UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.3 and num_layers=1 warnings.warn("dropout op…

數據中臺與數據治理服務方案[50頁PPT]

本文概述了數據中臺與數據治理服務方案的核心要點。數據中臺作為政務服務數據化的核心&#xff0c;通過整合各部門業務系統數據&#xff0c;進行建模與加工&#xff0c;以新數據驅動政府管理效率提升與政務服務能力增強。數據治理則聚焦于解決整體架構問題&#xff0c;確保數據…

postgresq-自定義執行計劃(custom plan)與generic plan(通用執行計劃)

文章目錄 之前寫過一篇關于 PostgreSQL prepare sql的文章&#xff0c;但當時沒有提到generic plan(通用計劃)和custom plan(自定義計劃)這兩個概念。現在將通過舉例介紹這兩個概念。 創建測試表&#xff1a; postgres# create database demo; CREATE DATABASE postgres# \c d…

dockfile 配置 /etc/apt/source.list.d/debian.list 清華鏡像

docker:3.12.7 鏡像使用的是 debian 系統&#xff0c;比 ubuntu 更輕量。debian 系統內&#xff0c;apt 鏡像源列表位于 /etc/apt/source.list.d/debian.list&#xff08;作為對比&#xff0c;ubuntu 的鏡像列表位于 /etc/apt/source.list&#xff0c;二者語法相同&#xff09;…