You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot引入其他Spring Boot jar无法导入类的问题

问题原因

Spring Boot 项目默认通过spring-boot-maven-plugin打包生成的是可执行 fat jar,这类jar会把项目自身编译出来的类统一放在BOOT-INF/classes目录下,第三方依赖放在BOOT-INF/lib目录下,不符合Maven常规依赖jar的路径结构。因此即使你把search-engine的jar安装到本地仓库,post-engine引入依赖后也无法识别到jar内的类,自然无法完成导入。

修复步骤
  • 修改search-engine项目pom.xml中的spring-boot-maven-plugin配置,增加<classifier>exec</classifier>配置项,让Maven打包时同时生成两个jar包:
    • 带exec分类的fat jar:用于单独启动search-engine服务
    • 无分类的普通jar:符合Maven依赖规范,存放项目所有编译后的类,供其他项目作为依赖引入
      具体配置如下:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
        <!-- 新增该行配置 -->
        <classifier>exec</classifier>
    </configuration>
</plugin>
  • 重新在search-engine项目根目录执行mvn clean install,将新生成的普通jar安装到本地Maven仓库
  • 回到post-engine项目刷新Maven依赖,即可正常导入search-engine中的类。

补充注意:如果需要在post-engine中注入search-engine里定义的Spring Bean,需要在post-engine的启动类上配置包扫描范围,覆盖search-engine的包路径,例如@SpringBootApplication(scanBasePackages = "com.askvedicastrologers"),否则会出现Bean找不到的注入错误。

内容的提问来源于stack exchange,提问作者Rajesh Lohith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:30:43