Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] JDK 23 compatibility #3722

Open
mmoayyed opened this issue Aug 13, 2024 · 17 comments
Open

[FEATURE] JDK 23 compatibility #3722

mmoayyed opened this issue Aug 13, 2024 · 17 comments
Assignees

Comments

@mmoayyed
Copy link
Contributor

mmoayyed commented Aug 13, 2024

Describe the feature

Allow lombok to support building against JDK 23.

Describe the target audience

While JDK 23 is still in RC mode as of this writing, there are RC builds available nonetheless that one can use for experimentation and preparation against the next JDK release.

Additional context

Lombok today, 1.8.34, seems unable to build against JDK 23. To start with, there is the following error:

error: An unhandled exception was thrown by the Error Prone static analysis plugin.
     Please report this at https://github.com/google/error-prone/issues/new and include the following:

     error-prone version: 2.30.0
     BugPattern: (see stack trace)
     Stack Trace:
     java.lang.NoSuchFieldError: Class com.sun.tools.javac.parser.Tokens$Comment$CommentStyle does not have member field 'com.sun.tools.javac.parser.Tokens$Comment$CommentStyle JAVADOC'
        at lombok.javac.Javac$JavadocOps_8$1.getStyle(Javac.java:364)
        at jdk.compiler/com.sun.tools.javac.parser.DocCommentParser.getTextKind(DocCommentParser.java:171)
        at jdk.compiler/com.sun.tools.javac.parser.DocCommentParser.<init>(DocCommentParser.java:164)
        at jdk.compiler/com.sun.tools.javac.parser.DocCommentParser.<init>(DocCommentParser.java:139)
        at jdk.compiler/com.sun.tools.javac.api.JavacTrees.getDocCommentTree(JavacTrees.java:1129)
        at jdk.compiler/com.sun.tools.javac.parser.LazyDocCommentTable.getCommentTree(LazyDocCommentTable.java:101)
        at jdk.compiler/com.sun.tools.javac.api.JavacTrees.getDocCommentTree(JavacTrees.java:759)
        at com.google.errorprone.bugpatterns.javadoc.Utils.getDocCommentTree(Utils.java:132)
        at com.google.errorprone.bugpatterns.javadoc.Utils.getDocTreePath(Utils.java:124)
        at com.google.errorprone.bugpatterns.javadoc.EmptyBlockTag.checkForEmptyBlockTags(EmptyBlockTag.java:81)
        at com.google.errorprone.bugpatterns.javadoc.EmptyBlockTag.matchVariable(EmptyBlockTag.java:76)
        at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
        at com.google.errorprone.scanner.ErrorProneScanner.visitVariable(ErrorProneScanner.java:884)
        at com.google.errorprone.scanner.ErrorProneScanner.visitVariable(ErrorProneScanner.java:150)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1081)
        at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
        at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
        at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
        at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:95)
        at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
        at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:118)
        at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:202)
        at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:548)
        at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:150)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:896)
        at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
        at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
        at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
        at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
        at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:118)
        at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:151)
        at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:560)
        at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:625)
        at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:66)
        at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
        at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
        at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:227)
        at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:133)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1432)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1379)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:964)
        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.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:92)
        at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
        at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
        at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:76)
        at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:46)
        at org.gradle.api.internal.tasks.compile.daemon.AbstractIsolatedCompilerWorkerExecutor$CompilerWorkAction.execute(AbstractIsolatedCompilerWorkerExecutor.java:78)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54)
        at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
        at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48)
        at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:32)
        at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:22)
        at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:103)
        at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:72)
        at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:152)
        at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
        at org.gradle.process.internal.worker.request.WorkerAction.lambda$run$1(WorkerAction.java:149)
        at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:85)
        at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:141)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
        at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1575)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

Originally reported here: google/error-prone#4532

Judging by the trace, this line seems to suggest that this is more of a Lombok issue, rather than Gradle or Error Prone:

java.lang.NoSuchFieldError: Class com.sun.tools.javac.parser.Tokens$Comment$CommentStyle does not have member field 'com.sun.tools.javac.parser.Tokens$Comment$CommentStyle JAVADOC'
        at lombok.javac.Javac$JavadocOps_8$1.getStyle(Javac.java:364)

JDK:

openjdk version "23" 2024-09-17
OpenJDK Runtime Environment (build 23+36-2368)
OpenJDK 64-Bit Server VM (build 23+36-2368, mixed mode, sharing)

Gradle:

------------------------------------------------------------
Gradle 8.10-rc-1
------------------------------------------------------------

Build time:    2024-08-08 06:07:55 UTC
Revision:      4f143ee84909970e5148c38b3ac7db3ff826a022

Kotlin:        1.9.24
Groovy:        3.0.22
Ant:           Apache Ant(TM) version 1.10.14 compiled on August 16 2023
Launcher JVM:  23 (Oracle Corporation 23+36-2368)
Daemon JVM:    /Library/Java/JavaVirtualMachines/jdk-23.jdk/Contents/Home (no JDK specified, using current Java home)
OS:            Mac OS X 14.5 aarch64

Related: projectlombok/lombok.patcher#15

@mickaelistria
Copy link

I can reproduce this error in some other context (also involving calling compilation task programatically): https://ci.eclipse.org/ls/job/jdt-ls-javac/lastCompletedBuild/testReport/org.eclipse.jdt.ls.core.internal.handlers/RenameHandlerTest/testLombokSingular/
I suspect the culprit line is

return CommentStyle.JAVADOC;
, which makes lombok add into the AST an incompatible node. Since Java 23, the possible values for CommentStyle are https://github.com/openjdk/jdk/blob/4b7906375b4bd11a480665110561180825c2dd9c/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Tokens.java#L276...L281

@mingchiuli
Copy link

GraalVM compatibility:

> Task :micro-gateway:compileJava FAILED
error: Error during the transformation of 'org.chiu.micro.gateway.router.Router'; post-compiler 'lombok.bytecode.SneakyThrowsRemover' caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 67
  	at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:200)
  	at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:180)
  	at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:166)
  	at lombok.bytecode.AsmUtil.fixJSRInlining(AsmUtil.java:37)
  	at lombok.bytecode.SneakyThrowsRemover.applyTransformations(SneakyThrowsRemover.java:46)
  	at lombok.core.PostCompiler.applyTransformations(PostCompiler.java:44)
  	at lombok.core.PostCompiler$1.close(PostCompiler.java:87)
  	at jdk.compiler/com.sun.tools.javac.jvm.ClassWriter.writeClass(ClassWriter.java:1548)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:771)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1700)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1668)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:977)
  	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.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:92)
  	at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
  	at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
  	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:76)
  	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:46)
  	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:98)
  	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
  	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
  	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:52)
  	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:38)
  	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:46)
  	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:[36](https://github.com/mingchiuli/megalith-micro/actions/runs/10904698290/job/30261760666#step:5:37))
  	at org.gradle.jvm.toolchain.internal.DefaultToolchainJavaCompiler.execute(DefaultToolchainJavaCompiler.java:57)
  	at org.gradle.api.tasks.compile.JavaCompile.lambda$createToolchainCompiler$3(JavaCompile.java:204)
  	at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)
  	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:52)
  	at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:70)
  	at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:44)
  	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:66)
  	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:52)
  	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$1.call(CompileJavaBuildOperationReportingCompiler.java:64)
  	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$1.call(CompileJavaBuildOperationReportingCompiler.java:[48](https://github.com/mingchiuli/megalith-micro/actions/runs/10904698290/job/30261760666#step:5:49))
  	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)

@0x3C50
Copy link

0x3C50 commented Sep 18, 2024

OpenJDK 23 also throws the above error. The ASM shadow can't handle version 23 bytecode.

@mmoayyed
Copy link
Contributor Author

Aside from the Javadoc error, lombok-patcher needs to be released first: projectlombok/lombok.patcher#15

and then lombok should be updated to use the new patcher.

@HenrikPublic
Copy link

It looks like SneakyThrowsRemover also needs some fiddling:

post-compiler 'lombok.bytecode.SneakyThrowsRemover' caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 67
        at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:200)
        at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:180)
        at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:166)
        at lombok.bytecode.AsmUtil.fixJSRInlining(AsmUtil.java:37)
        at lombok.bytecode.SneakyThrowsRemover.applyTransformations(SneakyThrowsRemover.java:46)
        at lombok.core.PostCompiler.applyTransformations(PostCompiler.java:44)
        at lombok.core.PostCompiler$1.close(PostCompiler.java:87)

Rawi01 added a commit to Rawi01/lombok that referenced this issue Sep 20, 2024
@Rawi01
Copy link
Collaborator

Rawi01 commented Sep 21, 2024

This should be fixed by my PR, can you try the artifact build by our pipeline?

@mmoayyed
Copy link
Contributor Author

@Rawi01 works quite well, thank you.

@danishnawab
Copy link

@mmoayyed how exactly does one reproduce this?

I just migrated an existing project from Java 22 to 23 and it was built successfully.

Stack:

  • Java: openjdk 23 2024-09-17
  • Gradle: 8.10.2
  • Lombok: 1.18.34

I would like to know exactly which conditions trigger the incompatibility with lombok.

@asashour
Copy link

asashour commented Sep 30, 2024

With Liquibase 4.29.2, and with SneakyThrowsRemover, there is an exception of Unsupported class file major version 67:

/DataChangeExecListener.java: Error during the transformation of 'DataChangeExecListener'; post-compiler 'lombok.bytecode.SneakyThrowsRemover' caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 67   
[ERROR]         at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:200)
[ERROR]         at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:180)
[ERROR]         at org.lombokweb.asm.ClassReader.<init>(ClassReader.java:166)
[ERROR]         at lombok.bytecode.AsmUtil.fixJSRInlining(AsmUtil.java:37)
DataChangeExecListener
@RequiredArgsConstructor
@Slf4j
class DataChangeExecListener implements ChangeExecListener {
  @Override
  public void willRun(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, ChangeSet.RunStatus runStatus) {
    test(changeSet, true);
  }

  @Override
  public void ran(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, ChangeSet.ExecType execType) {
    test(changeSet, false);
  }

  @SneakyThrows
  private void test(ChangeSet changeSet, boolean before) {
    try (var reader = Files.newBufferedReader(Path.of(""))) {
    }
  }

  @Override
  public void willRollback(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database) {
  }

  @Override
  public void rolledBack(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database) {

  }

  @Override
  public void preconditionFailed(PreconditionFailedException error, PreconditionContainer.FailOption onFail) {
  }

  @Override
  public void preconditionErrored(PreconditionErrorException error, PreconditionContainer.ErrorOption onError) {
  }

  @Override
  public void willRun(Change change, ChangeSet changeSet, DatabaseChangeLog changeLog, Database database) {
  }

  @Override
  public void ran(Change change, ChangeSet changeSet, DatabaseChangeLog changeLog, Database database) {
  }

  @Override
  public void runFailed(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Exception exception) {
  }

  @Override
  public void rollbackFailed(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Exception exception) {
  }
}

@faris-git
Copy link

Is this @SneakyThrows issue handled in this issue. Or should I create new one for that.

@lprimak
Copy link

lprimak commented Oct 6, 2024

I've been running edge release for a while. Can we get a release going please?

@victorwss
Copy link
Contributor

@mmoayyed how exactly does one reproduce this?

I just migrated an existing project from Java 22 to 23 and it was built successfully.

Stack:

* Java: `openjdk 23 2024-09-17`

* Gradle: `8.10.2`

* Lombok: `1.18.34`

I would like to know exactly which conditions trigger the incompatibility with lombok.

It seems that the use of Lombok's @Getter and/or @Setter in a field with a Javadoc containing the -- GETTER -- and/or -- SETTER -- sections triggers this bug. I think that the @SneakyThrows issue is something different.

@asashour
Copy link

asashour commented Oct 7, 2024

I think that the @SneakyThrows issue is something different.

The title hints that all issues regarding Java 23 would be included. Please change it otherwise, thanks.

@d-eder
Copy link

d-eder commented Oct 9, 2024

is there any estimated time when lombok will support Java23?
We also have the issue with @SneakyThrows:

post-compiler 'lombok.bytecode.SneakyThrowsRemover' caused an exception: java.lang.IllegalArgumentException: Unsupported class file major version 67

@victorwss
Copy link
Contributor

I think that the @SneakyThrows issue is something different.

The title hints that all issues regarding Java 23 would be included. Please change it otherwise, thanks.

Yes, the title does, but the content of the first post doesn't, focusing on a single issue. I don't have any editing or mod priviledge here. I think that each issue should be submitted in a different bug report, this one either has a title too broad or should be written as an umbrella-issue right from the start.

Further, the title contains "[FEATURE]" when it is in fact a "[BUG]" report. This is important, since bugfixes normally have higher priority (not that it really makes a difference in this project though).

@lprimak
Copy link

lprimak commented Oct 9, 2024

I think all the bugs already have separate issues. This issue (IMHO) is mostly about the release of the artifact

@linghengqian
Copy link

  • From my point of view, the current problem seems to only require thinking about how to support markdown comments in JDK23? I tested Support compiling and using ShardingSphere under OpenJDK 23 apache/shardingsphere#33025 against org.projectlombok:lombok:1.18.34 under GraalVM CE For JDK23 and found no issues other than not supporting markdown comments.
  • Of course, maven.compiler.proc has been set to full by me to reflect the changes after JDK20.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests