问题描述
拉了别人一整个大项目的代码,项目里有很多个模块,因为期间互相依赖,所以需要分别启动每个模块的服务。
但在启动其中一个模块的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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
但因为我的mavenlib路径下好像已经有了很多个版本的lombok以及其他包,因此修改这个并没有用。
@Data注解问题
在我重复clean compile install了,并且关了IDEA重启了无数遍以后(这个方法确实有时候是有用的,也不妨试试,全靠运气)
我终于尝试, 单独把报错里面指向的那个java文件中的@Data改为@Getter和@Setter
@Getter
@Setter
public class XXXXMessage {
private String XXXX;
}
- 1
- 2
- 3
- 4
- 5
重新启动。问题解决。
事实证明,不要怕麻烦!!!不要担心要改很多地方!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!
代码定位错在哪!就去哪个文件里!把里面的@Data改掉!!!
评论记录:
回复评论: