Spring Boot + LangChain4j 报错:Bean 类型不匹配的解决办法

在使用 Spring Boot + LangChain4j 开发 AI 应用时,在 Service 工厂中注入如下两个Bean:

java 复制代码
@Resource
private StreamingChatModel openAiStreamingChatModel;

@Resource
private StreamingChatModel reasoningStreamingChatModel;

一切看起来都很合理,但启动时就报如下错误❌:

bash 复制代码
Bean named 'openAiStreamingChatModel' is expected to be of type 'dev.langchain4j.model.chat.StreamingChatModel' but was actually of type 'dev.langchain4j.model.openai.OpenAiStreamingChatModel'

最诡异的是 OpenAiStreamingChatModel 明明是 StreamingChatModel 的子类,期望类型和实际类型"看起来完全兼容",但还是报错!

原因分析

这个错误的根源,其实不是代码逻辑的问题,而是 spring-boot-devtools 的热部署机制导致的类加载冲突。

Spring Boot DevTools 为了实现快速重启,使用了两个类加载器。

一个是Base ClassLoader ,主要负责加载Spring Boot 框架、第三方 jar(比如 langchain4j-core.jar);

另一个是Restart ClassLoader,主要负责加载自己的项目代码(比如src/main/java)。

默认情况下,DevTools 会把 所有非项目代码的 jar 放入 Base ClassLoader。

但是!

LangChain4j 这类库,通过 Maven 引入,它其实是属于"第三方依赖",理应由 Base ClassLoader 加载。

然而,在某些版本或配置下,DevTools 可能错误地将部分 LangChain4j 类交给了 Restart ClassLoader。

这样就造成同一个类,有两个身份,这样 JVM 认为这是两个完全无关的类。即使包名、类名、继承关系都对,也无法进行类型转换或赋值。

解决方案

1.在项目的如下目录中创建文件:

bash 复制代码
src/main/resources/META-INF/spring-devtools.properties

2.文件内容如下,主要目的是告诉 DevTools,这些 jar 属于基础类路径,统一用 Base ClassLoader 加载。

bash 复制代码
restart.include.langchain4j=/langchain4j-.*\.jar
restart.include.openai=/openai-.*\.jar

3.重新运行,问题解决。

相关推荐
方知我1 天前
01FastAPI基础入门
人工智能·python
DreamLife☼1 天前
Agent与大语言模型的集成
windows·python·语言模型
RuoyiOffice1 天前
llama.cpp + SpringBoot3:本地部署 Qwen3.8,接入 AgentOS 企业办公智能体
spring boot·springboot3·llama.cpp·spring ai·qwen3.8·agentos
BK贝壳1 天前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
2601_966949651 天前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
学长毕设1 天前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
在世修行1 天前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_962885721 天前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI1 天前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
信誓旦旦的程序猿1 天前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口