@SneakyThrowsWhen使用lombok的"@SneakyThrows"时,出现了不支持的类文件主版本61。

3

我正在学习在Maven项目中使用Lombok。当我使用"@SneakyThrows"时,会出现一些错误。我发现当我删除"@SneakyThrows"时,错误消失了。

以下是错误和代码。

java: Error during the transformation of 'com.zem.mybatis.DAO.BO.Bus'; post-compiler 'lombok.bytecode.SneakyThrowsRemover' caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 61
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:189)
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:156)
    at lombok.bytecode.AsmUtil.fixJSRInlining(AsmUtil.java:37)
    at lombok.bytecode.SneakyThrowsRemover.applyTransformations(SneakyThrowsRemover.java:46)
    at lombok.core.PostCompiler.applyTransformations(PostCompiler.java:43)
    at lombok.core.PostCompiler$1.close(PostCompiler.java:77)
    at jdk.compiler/com.sun.tools.javac.jvm.ClassWriter.writeClass(ClassWriter.java:1508)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:738)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1617)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1585)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:238)
    at org.jetbrains.jps.incremental.java.JavaBuilder.lambda$compileJava$2(JavaBuilder.java:518)
    at org.jetbrains.jps.incremental.java.JavaBuilder.invokeJavac(JavaBuilder.java:564)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:516)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:359)
    at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:284)
    at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:238)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1507)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1141)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1288)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1106)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:877)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:459)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:197)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:131)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:334)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:162)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:218)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

@AllArgsConstructor
@Data
@Builder
public class Bus {
    private @Singular("a")
    List<Integer> arrayList;
    @Getter(lazy = true) private final static Bus bus = Bus.builder().a(1).build();
}

这是 Lombok 的依赖项。
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.16</version>
</dependency>

2
错误意味着您正在使用不支持Java 17的Lombok版本(或实际上是ASM版本)。这表明您正在使用1.18.22之前的Lombok版本。您使用的是哪个版本的Lombok? - Mark Rotteveel
2
所以,您正在使用Lombok 1.18.16版本。您需要将其升级到1.18.22或更高版本。 - Jesper
请简化你的代码以便更容易地找出问题所在。请按照这些指南创建一个最小化可重现的示例 - Community
问题已经解决,当我将 lombok 依赖从版本 1.18.16 更改为 1.18.24 时。感谢您的帮助! - unparallelDream
1个回答

6

您正在使用Lombok 1.18.16,但是Lombok在1.18.22版本中添加了对Java 17的支持(请参见更新日志问题2898)。 您需要升级到1.18.22或更高版本才能在Java 17上正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接