SpringBoot项目import正常但调用类时出现ClassNotFoundException
排查SpringBoot项目中本地system scope依赖Min类ClassNotFoundException的原因
以下是针对该问题的具体排查方向:
system scope依赖打包遗漏
Maven的system scope依赖默认不会被纳入最终构建产物(jar/war),构建时能通过本地路径找到类,但运行时类路径中没有Min的jar就会触发异常。- 检查Spring Boot Maven插件配置,确认是否添加了
<includeSystemScope>true</includeSystemScope>,确保system scope依赖被打包。 - 对比Max和Min的pom依赖配置,看是否Max的依赖有额外的打包处理逻辑(比如插件的依赖包含规则)而Min没有。
- 检查Spring Boot Maven插件配置,确认是否添加了
Min类的jar文件本身异常
即使路径正确,jar文件可能存在损坏或结构问题:- 执行
jar tf your-min-library.jar命令,查看输出中是否存在com/runner/min/Min.class,确认类路径和类名完全匹配(注意大小写敏感,跨平台运行时尤其要注意)。 - 尝试重新生成Min的jar文件,排除文件损坏的可能。
- 执行
运行时类路径未包含Min的jar
- 如果是IDE中运行,检查项目运行配置的类路径,确认Min的jar是否被添加到Runtime依赖中(比如IDEA的
Run/Debug Configurations里的Classpath标签)。 - 如果是打包后运行,检查启动命令是否手动指定了类路径,有没有遗漏Min的jar路径;或者查看最终jar的
BOOT-INF/lib目录,确认Min的jar是否存在。
- 如果是IDE中运行,检查项目运行配置的类路径,确认Min的jar是否被添加到Runtime依赖中(比如IDEA的
pom.xml中Min的依赖配置错误
再次核对Min的依赖配置细节:- 确认
<systemPath>的路径是否完全正确,比如路径分隔符是否适配当前系统(建议用/作为通用分隔符),有没有拼写错误。 - 执行
mvn dependency:tree命令,查看依赖树中是否存在Min的依赖,确认没有被其他依赖规则意外排除。
- 确认
编译与运行环境不兼容
- 检查编译Min类的JDK版本和项目运行时的JDK版本是否一致,高版本JDK编译的类在低版本环境中可能无法加载(虽然通常报
UnsupportedClassVersionError,但极端情况也可能表现为类找不到)。 - 如果是跨平台打包运行,确认
<systemPath>是否使用了相对路径或适配目标平台的绝对路径,避免Windows路径在Linux环境中失效。
- 检查编译Min类的JDK版本和项目运行时的JDK版本是否一致,高版本JDK编译的类在低版本环境中可能无法加载(虽然通常报
内容的提问来源于stack exchange,提问作者Austin
相关产品推荐
相关产品推荐

