Springboot报错:Lombok annotation handler class lombok.javac.handlers.HandleData failed on Dxx.java

问题描述

拉了别人一整个大项目的代码,项目里有很多个模块,因为期间互相依赖,所以需要分别启动每个模块的服务。
但在启动其中一个模块的application时,死活启不起来,在Build的阶段就报错↓↓:

java: Lombok annotation handler class lombok.javac.handlers.HandleData failed on: /D:/xxxxx.java: java.lang.StackOverflowError


解决方法

在网上找了很多方法,也试了很多个:
推荐最多的方法是:
将注解@Data,改为@Setter或者@Getter
我没听,因为那个模块是别人写的,而且有很多个地方都写了@Data,我想:要改岂不是全都要改了?!我想保留别人的代码不动,直接启起来。

Lombok版本问题

我发现不同模块之间,pom里面写的lombok版本号并不相同,因此想通过修改子模块中pom.xml中的版本号与其他版本号一致,来改掉这个问题。
在StackOverflow查到,需要将pom.xml中的lombok版本,改为


	org.projectlombok
	lombok
	RELEASE
	provided

但因为我的mavenlib路径下好像已经有了很多个版本的lombok以及其他包,因此修改这个并没有用。

@Data注解问题

在我重复clean compile install了,并且关了IDEA重启了无数遍以后(这个方法确实有时候是有用的,也不妨试试,全靠运气)
我终于尝试, 单独把报错里面指向的那个java文件中的@Data改为@Getter和@Setter

@Getter
@Setter
public class XXXXMessage {
		private String XXXX;
	}

重新启动。问题解决。

事实证明,不要怕麻烦!!!不要担心要改很多地方!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!

你可能感兴趣的:(面试,学习路线,阿里巴巴,java,spring,boot,后端)