探索“黄色在线”的无限可能:色彩、文化与科技的交响曲

核心内容摘要

17ccom:数字浪潮中的璀璨明珠,开启无限可能的新纪元
Rule34安卓安装包:探索无限可能,解锁你的数字乐园

翻白眼流眼泪流口水

在使用 Spring Boot LangChain4j 开发 AI 应用时在 Service 工厂中注入如下两个BeanResourceprivateStreamingChatModelopenAiStreamingChatModel;ResourceprivateStreamingChatModelreasoningStreamingChatModel;一切看起来都很合理但启动时就报如下错误❌Bean namedopenAiStreamingChatModelis expected to be oftypedev.langchain4j.model.chat.StreamingChatModelbut was actually oftypedev.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 认为这是两个完全无关的类。

即使包名、类名、继承关系都对也无法进行类型转换或赋值。

解决方案

在项目的如下目录中创建文件src/main/resources/META-INF/spring-devtools.properties

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

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

重新运行问题解决。

女性无裆连体内衣跳舞-女性无裆连体内衣跳舞应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123