news 2026/3/18 15:10:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot + LangChain4j 报错:Bean 类型不匹配的解决办法

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

@ResourceprivateStreamingChatModelopenAiStreamingChatModel;@ResourceprivateStreamingChatModelreasoningStreamingChatModel;

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

Bean named'openAiStreamingChatModel'is expected to be oftype'dev.langchain4j.model.chat.StreamingChatModel'but was actually oftype'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.在项目的如下目录中创建文件:

src/main/resources/META-INF/spring-devtools.properties

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

restart.include.langchain4j=/langchain4j-.*\.jar restart.include.openai=/openai-.*\.jar

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 12:13:19

Python 一行代码实现计数统计:dict.get() 的巧妙用法

Python 一行代码实现计数统计:dict.get() 的巧妙用法 在 Python 中统计元素出现次数是一个常见需求。今天分享一个经典且优雅的写法,只需一行代码就能搞定: app_stats[entry.app_id] app_stats.get(entry.app_id, 0) 1场景还原 假设我们在分…

作者头像 李华
网站建设 2026/3/12 22:47:12

大模型学习路线图:从概念到实践(程序员必备,建议收藏)

本文全面介绍了大模型的基本概念、训练过程、应用领域、发展趋势及挑战。大模型是包含超大规模参数的神经网络模型,通过预训练和微调获得知识,具备涌现和泛化能力。当前大模型广泛应用于语言、音频、视觉等领域,呈现"百模大战"和&q…

作者头像 李华
网站建设 2026/3/13 14:12:51

基于深度学习的交通标志识别研究与应用

目录 深度学习在交通标志识别中的核心方法关键技术优化方向实际应用场景部署性能评估指标 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 深度学习在交通标志识别中的核心方法 卷积神经网络(…

作者头像 李华
网站建设 2026/3/17 9:02:09

【开题答辩全过程】以 基于Java的九价疫苗预约系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/3/13 0:12:33

HighGoDB 用户密码安全策略

文章目录 环境文档用途详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.3.2 文档用途 通过调用函数的方式增强用户密码的安全性 详细信息 一般来说数据库密码安全管理要考虑以下几个方面 : 密码过期策略, 决定密码的有效期…

作者头像 李华
网站建设 2026/3/14 0:37:16

Substance P (1-9) ;RPKPQPFG

一、基础信息 英文名称:Substance P (1-9)三字母序列:Arg-Pro-Lys-Pro-Gln-Gln-Phe-Phe-Gly单字母序列:RPKPQPFG精确分子量:1104.28 Da等电点(pI):6.2~6.7,弱酸性分子式&#xff1a…

作者头像 李华