前言:今天启动spring boot项目,发现启动不起来,报了一个无法加载主类的错误,后面解决后,准备打包部署项目,发现又报了一个找不到符号的错误,后面也是顺利解决,在此记录一下我的Debug之旅。
报错一:找不到或无法加载主类 ***Application
报错截图:
遇到 “找不到或无法加载主类” 错误时,通常是由于 类路径配置错误、主类未正确编译 或 项目结构问题 导致的。
以下是详细的排查和解决方案:
可能原因:
- 旧编译文件残留导致类未生成。
- 构建工具(Maven/Gradle)未正确执行。
解决方法:
1. 确认主类是否存在且路径正确,如果文件路径或包名不匹配,修正路径或包声明。
2. 清理并重新构建项目(本人是根据这个成功解决) Build--->Rebuild Project
报错二:找不到符号
报错截图:
当打包时出现 “找不到符号”(cannot find symbol
)错误,通常是因为代码中引用了未定义的类、方法或变量。以下是详细的排查和解决方案:
一: 检查依赖是否正确引入
可能原因:
- 缺少依赖库,或依赖未正确下载。
- 依赖的作用域(
scope
)设置不当(如test
或provided
导致主代码不可用)。 - 依赖版本冲突,导致API不兼容。
解决方法:
-
确认报错符号的来源:
- 根据错误日志,找到缺失的类或方法属于哪个依赖库。
- 例如:
cannot find symbol: class SomeClass
→ 检查SomeClass
所在的依赖是否在pom.xml
或build.gradle
中声明。
-
添加缺失的依赖(以 Maven 为例):
<!-- 示例:添加 Lombok 依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency>
-
检查依赖作用域:
确保依赖的scope
不是test
或provided
(除非明确需要)。 -
更新依赖版本:
如果依赖版本过旧,可能缺少某些类或方法。尝试升级到最新版本。
二:检查多模块项目依赖
可能原因:
- 多模块项目中,子模块之间的依赖未正确声明。(本人是因为这个)
- 构建顺序错误,导致某些模块未编译完成就被引用。
解决方法:
-
确认子模块依赖:
- 在父
pom.xml
中检查子模块的<modules>
顺序,确保被依赖的模块先构建。 - 子模块间的依赖需通过
<dependency>
明确声明:<!-- 子模块A依赖子模块B --> <dependency> <groupId>com.example</groupId> <artifactId>module-b</artifactId> <version>${project.version}</version> </dependency>
- 在父
-
清理并重新构建:
mvn clean install -pl module-a -am # 构建 module-a 并自动构建其依赖的模块