使用lombok的@SneakyThrows注解报错Java: 未报告的异常错误java.lang.InterruptedException

使用了lombok的@SneakyThrows注解,运行时还是报错:java: 未报告的异常错误java.lang.InterruptedException; 必须对其进行捕获或声明以便抛出
代码:

@SneakyThrows
@Override
public void run() {
	synchronized (first) {
		System.out.println("获取了first锁");
		synchronized (second) {
			Thread.sleep(1000L);
			System.out.println("获取了second锁");
		}
	}
}

@SneakyThrows的作用就是替代之前某些JDK声明的受控异常时,需要显示进行try-catch处理。
代码看着是没有问题的,此时编译器也没有提示错误,但是每当编译运行时,就报错:

com\itzhimei\XXXTest.java:26:29
java: 未报告的异常错误java.lang.InterruptedException; 必须对其进行捕获或声明以便抛出

现在的问题很明显,@SneakyThrows注解失效了,当然我可以不使用@SneakyThrows注解,换成try-catch代码来处理受控异常,例如这样改:

@Override
public void run() {
	synchronized (first) {
		System.out.println("获取了first锁");
		synchronized (second) {
			try {
				Thread.sleep(1000L);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("获取了second锁");
		}
	}
}

但是代码会比较臃肿,我们使用lombok的初衷就是为了代码简洁,这样写就变味了。
那么问题原因在哪里呢?经过排查发现,问题出在SpringBoot版本和lombok版本不兼容。
SpringBoot版本是2.5.4,我的lombok一开始引入的是1.18.12这个版本

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.12</version>
</dependency>

发现有问题,我就去掉了lombok版本号,那么SpringBoot2.5.4版本默认使用的是lombok的1.18.20。
然后执行代码,一切正常,问题解决了。