使用Amazon Corretto 8构建Maven项目时出现StackOverflowError问题咨询
问题解答
1. Amazon Corretto 8是否内置Lombok?如何排除?
Amazon Corretto 8是OpenJDK的官方兼容发行版,本身不会内置Lombok。报错栈出现Lombok AST处理逻辑,大概率是你的Maven构建过程中,某个依赖或插件间接引入了Lombok的注解处理器(比如部分第三方库、Maven编译插件的依赖链里带了Lombok)。
解决方法:
- 先排查依赖树:执行
mvn dependency:tree -Dincludes=org.projectlombok:lombok,找到Lombok的引入来源,然后在对应的<dependency>里添加排除规则:<dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclusion> </exclusions> </dependency> - 强制控制编译期注解处理器:在maven-compiler-plugin里显式指定注解处理器路径,避免自动加载未知处理器:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <!-- 仅使用指定的注解处理器,留空表示禁用所有自动加载的处理器 --> <annotationProcessorPaths> </annotationProcessorPaths> </configuration> </plugin>
2. 定位类循环依赖的工具
如果确认是类级别的循环依赖导致栈溢出,这些工具可以帮你定位:
- IntelliJ IDEA 内置分析工具:打开项目后,执行
Analyze -> Inspect Code,在检查配置里勾选Java -> Code maturity issues -> Cyclic dependencies,运行后会列出所有类间的循环依赖。 - Eclipse Cycle Detector:安装Cycle Detector插件,右键项目选择
Cycle Detector -> Find Cycles,可直观展示类/包的循环依赖链。 - SpotBugs:集成到Maven构建中,它的
CyclicClassDependency检测器会自动扫描并报告类间的循环依赖问题。 - JDepend:专门的Java依赖分析工具,通过Maven插件引入后,执行
mvn jdepend:generate生成HTML报告,其中会明确标记循环依赖的类和包。 - SonarQube:静态代码扫描平台,将项目接入后,在代码质量报告里可找到
Cyclic dependency between classes的问题项,附带详细的依赖链路。
内容的提问来源于stack exchange,提问作者Jalandar R
相关产品推荐
相关产品推荐

