news 2026/4/16 18:10:54

Spring Boot多模块项目中程序可运行但mvn install 时找不到类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot多模块项目中程序可运行但mvn install 时找不到类

问题描述

A模块引用了B模块

@ComponentScan( basePackages = {"com.moduleA", "com.moduleB", com.moduleB.util"}, excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, classes = {A.class}) } )
mvn install [ERROR] A.class不存在

常见原因分析

模块依赖未正确定义
父模块的pom.xml未正确声明子模块,或子模块间未通过<dependencies>正确引用。

构建顺序问题
Maven/Gradle未按依赖顺序编译模块,导致被依赖模块未优先编译。

类路径扫描失效
Spring Boot的组件扫描未包含依赖模块的包路径,导致@Component等注解未被识别。

编译时类不可用

@ComponentScan 的 excludeFilters 使用 FilterType.ASSIGNABLE_TYPE 直接引用类,但这些类在编译时可能不可用(即使已声明依赖),导致编译失败

解决方案

解决方案

  1. 创建自定义过滤器 ClassNameExcludeFilter:通过字符串类名匹配需要排除的类,避免编译时类引用。
  1. 修改 Application上面的注解:使用 FilterType.CUSTOM 和自定义过滤器。
public class ClassNameExcludeFilter implements TypeFilter { private static final Set<String> EXCLUDED_CLASS_NAMES = new HashSet<>(Arrays.asList( "*" )); @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) { String className = metadataReader.getClassMetadata().getClassName(); return EXCLUDED_CLASS_NAMES.contains(className); } }

检查打包结果
确认依赖模块生成的jar包含编译后的类和资源文件。可通过解压jar或检查target/classes目录验证。

高级调试技巧

  • 使用mvn dependency:tree分析依赖树,排除冲突或缺失。
  • 在IDE中检查模块的类路径是否包含依赖模块的输出目录(如target/classes)。
  • 对于Gradle,启用--debug日志查看详细构建过程。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 10:05:04

36、网络安全测试工具与互联网服务解析

网络安全测试工具与互联网服务解析 在网络安全和互联网服务的领域中,有许多强大的工具和概念值得我们去探索。下面将详细介绍一些常见的安全测试工具以及互联网服务的相关知识。 安全测试工具 在进行网络安全测试时,有很多自动化工具可供选择。这些工具的功能各有不同,有…

作者头像 李华
网站建设 2026/4/16 12:25:36

陪读蛙Read Frog配置API Key图文教程

一、安装陪读蛙Read Frog 请前往官方地址下载并安装陪读蛙Read Frog&#xff1a; https://www.readfrog.app/zh 在应用商店安装。如下图所示&#xff1a; 安装后将会自动跳转&#xff0c;选择合适的母语。如下图所示&#xff1a; 在浏览器插件中&#xff0c;将陪读蛙Read Frog…

作者头像 李华
网站建设 2026/4/16 10:14:13

45、Linux技术全面指南:符号、网络、应用与安全解析

Linux技术全面指南:符号、网络、应用与安全解析 1. 符号与数字表示 在Linux系统里,有不少特殊的符号和数字表示方法,它们在不同场景下发挥着关键作用。例如,“.”代表当前目录,“..”表示父目录,“/”是根目录,同时在文件系统组织中也有重要意义。“[ ]”作为通配符占…

作者头像 李华
网站建设 2026/4/16 10:26:30

数据为核,驱动智造:产品数据管理(PDM)的核心价值与选型指南

在智能制造与数字化转型的浪潮中&#xff0c;产品研发数据已成为企业的核心战略资产。如何有效管理海量、复杂且关联紧密的产品数据&#xff0c;确保其准确性、一致性与可追溯性&#xff0c;是制造企业提升效率、缩短上市时间的关键。产品数据管理&#xff08;Product Data Man…

作者头像 李华
网站建设 2026/4/16 10:27:54

Linux线程:轻量高效但需谨慎

Linux线程概述Linux线程是轻量级进程&#xff08;LWP&#xff09;&#xff0c;属于某个进程并共享其资源&#xff08;如内存&#xff09;&#xff0c;但各自拥有独立的栈区。相比进程&#xff0c;线程的优势在于创建开销小&#xff08;仅需分配8MB栈区&#xff0c;而进程需3GB空…

作者头像 李华
网站建设 2026/4/16 10:27:02

电机控制器中IGBT结温估算的‘算法+模型‘机密级解决方案

电机控制器&#xff0c;IGBT结温估算&#xff08;算法模型&#xff09;国际大厂机密算法&#xff0c;多年实际应用&#xff0c;准确度良好 高价值知识 能够同时对IGBT内部6个三极管和6个二极管温度进行估计&#xff0c;并输出其中最热的管子对应温度。 可用于温度保护&#xff…

作者头像 李华