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

[BUG] lombok.eclipse.handlers.HandleBuilder failed - Java 22, Eclipse 2024-03 #3648

Closed
danijelz opened this issue Apr 3, 2024 · 12 comments · Fixed by #3633
Closed

[BUG] lombok.eclipse.handlers.HandleBuilder failed - Java 22, Eclipse 2024-03 #3648

danijelz opened this issue Apr 3, 2024 · 12 comments · Fixed by #3633

Comments

@danijelz
Copy link

danijelz commented Apr 3, 2024

Describe the bug
@Builder annotation failes in combination with @Singular annotation. Stack trace:

java.lang.NoSuchMethodError: 'void org.eclipse.jdt.internal.compiler.ast.CaseStatement.<init>(org.eclipse.jdt.internal.compiler.ast.Expression, int, int)'
	at lombok.eclipse.Eclipse.createCaseStatement(Eclipse.java:285)
	at lombok.eclipse.handlers.singulars.EclipseJavaUtilListSingularizer.appendBuildCode(EclipseJavaUtilListSingularizer.java:75)
	at lombok.eclipse.handlers.HandleBuilder.generateBuildMethod(HandleBuilder.java:821)
	at lombok.eclipse.handlers.HandleBuilder.handle(HandleBuilder.java:563)
	at lombok.eclipse.HandlerLibrary$AnnotationHandlerContainer.handle(HandlerLibrary.java:106)
	at lombok.eclipse.HandlerLibrary.handleAnnotation(HandlerLibrary.java:237)
	at lombok.eclipse.TransformEclipseAST$AnnotationVisitor.visitAnnotationOnType(TransformEclipseAST.java:269)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:107)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:74)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:69)
	at lombok.eclipse.EclipseAST.traverse(EclipseAST.java:224)
	at lombok.eclipse.TransformEclipseAST.go(TransformEclipseAST.java:226)
	at lombok.eclipse.TransformEclipseAST.transform(TransformEclipseAST.java:187)
	at lombok.eclipse.TransformEclipseAST.transform_swapped(TransformEclipseAST.java:104)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at lombok.launch.PatchFixesHider$Util.invokeMethod(PatchFixesHider.java:146)
	at lombok.launch.PatchFixesHider$Transform.transform_swapped(PatchFixesHider.java:272)
	at org.eclipse.jdt.internal.compiler.parser.Parser.endParse(Parser.java:11531)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12732)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12962)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12919)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11302)
	at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.accept(SourceIndexer.java:131)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:365)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:276)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:624)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:696)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:525)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:598)
	at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.resolveDocument(SourceIndexer.java:172)
	at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.resolveDocument(JavaSearchParticipant.java:116)
	at org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexResolvedDocument(IndexManager.java:680)
	at org.eclipse.jdt.internal.core.search.indexing.IndexManager$2.execute(IndexManager.java:1291)
	at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:542)
	at java.base/java.lang.Thread.run(Thread.java:1570)

To Reproduce
Install Eclipse 2024-03 with Java 22 support and Lombok 1.18.32. Add class:

import java.util.List;
import lombok.Builder;
import lombok.Data;
import lombok.Singular;

@Data
@Builder
public class Test {
  @Singular List<String> strings;
}

Version info:

  • Lombok version: 1.18.32
  • Platform: Screenshot_20240403_142531
@charleech
Copy link

charleech commented Apr 4, 2024

For me, it is VSCode 1.87.2, vscode-java 1.29.0, JDK 21 (Temurin-21.0.2+13) and Lombok 1.18.32.

[Error - 11:16:11 AM] Apr 4, 2024, 11:16:11 AM Lombok annotation handler class lombok.eclipse.handlers.HandleSuperBuilder failed
'void org.eclipse.jdt.internal.compiler.ast.CaseStatement.<init>(org.eclipse.jdt.internal.compiler.ast.Expression, int, int)'
java.lang.NoSuchMethodError: 'void org.eclipse.jdt.internal.compiler.ast.CaseStatement.<init>(org.eclipse.jdt.internal.compiler.ast.Expression, int, int)'
	at lombok.eclipse.Eclipse.createCaseStatement(Eclipse.java:285)
	at lombok.eclipse.handlers.singulars.EclipseJavaUtilListSingularizer.appendBuildCode(EclipseJavaUtilListSingularizer.java:75)
	at lombok.eclipse.handlers.HandleSuperBuilder.generateBuilderBasedConstructor(HandleSuperBuilder.java:582)
	at lombok.eclipse.handlers.HandleSuperBuilder.handle(HandleSuperBuilder.java:326)
	at lombok.eclipse.HandlerLibrary$AnnotationHandlerContainer.handle(HandlerLibrary.java:106)
	at lombok.eclipse.HandlerLibrary.handleAnnotation(HandlerLibrary.java:237)
	at lombok.eclipse.TransformEclipseAST$AnnotationVisitor.visitAnnotationOnType(TransformEclipseAST.java:269)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:107)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:74)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:69)
	at lombok.eclipse.EclipseAST.traverse(EclipseAST.java:224)
	at lombok.eclipse.TransformEclipseAST.go(TransformEclipseAST.java:226)
	at lombok.eclipse.TransformEclipseAST.transform(TransformEclipseAST.java:187)
	at lombok.eclipse.TransformEclipseAST.transform_swapped(TransformEclipseAST.java:104)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at lombok.launch.PatchFixesHider$Util.invokeMethod(PatchFixesHider.java:146)
	at lombok.launch.PatchFixesHider$Transform.transform_swapped(PatchFixesHider.java:272)
	at org.eclipse.jdt.internal.compiler.parser.Parser.endParse(Parser.java:11535)
	at org.eclipse.jdt.internal.core.util.CommentRecorderParser.endParse(CommentRecorderParser.java:131)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12736)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12966)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12923)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11306)
	at org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:850)
	at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:393)
	at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1256)
	at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:791)
	at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1242)
	at org.eclipse.jdt.core.dom.ASTParser.lambda$0(ASTParser.java:1120)
	at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5762)
	at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1120)
	at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:868)
	at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
	at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286)
	at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199)
	at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getASTRoot(CodeActionHandler.java:367)
	at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getCodeActionCommands(CodeActionHandler.java:139)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$14(JDTLanguageServer.java:765)
	at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
	at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

There is a reported issue at vscode-java, too.

@raffian
Copy link

raffian commented Apr 24, 2024

Similar issue:

"Lombok annotation handler class lombok.eclipse.handlers.HandleSuperBuilder failed - See error log."

2024-04-23 23:36:39.589 [warning] vscjava.vscode-lombok - Code actions of kind 'quickfix 'requested but returned code action is of kind 'refactor'. Code action will be dropped. Please check 'CodeActionContext.only' to only return requested code actions.

  • VSCode 1.88.1
  • Lombok Extension Annotations Support v1.1.0
  • Java Runtime 17.0.8+9-LTS-211
  • Windows 10

TEMP SOLUTION
Downgraded redhat/Language support for Java extension to 1.28.1

@yuzawa-san
Copy link

Does #3633 fix this issue?

@Rawi01 Rawi01 linked a pull request May 2, 2024 that will close this issue
@mikehaertl
Copy link

Does #3633 fix this issue?

@yuzawa-san Yes, it really seems to fix the issue. Tested it with eclipse.jdt.ls 1.34.0 under neovim where I had many errors with Lombok 1.18.32.

@foxpluto
Copy link

foxpluto commented May 4, 2024

Bump to release a new version with this fix.

@danijelz
Copy link
Author

danijelz commented May 7, 2024

Does #3633 fix this issue?

@yuzawa-san Sorry for late reply. It looks like the isue is fixed with #3633.

@rzwitserloot
Copy link
Collaborator

I think this warrants an emergency stable release. I'll discuss it with @rspilker – Until then, current edge release includes this patch.

@mohnish82
Copy link

Replacing RedHat Java extension Lombok jar with the Lombok snapshot release jar (v1.18.33), fixed the issue for me.

@foxpluto
Copy link

Yes this fixed for me too but it's really cumbersome, couldn't be possible to have a new version with this fix?

@rustyx
Copy link

rustyx commented Jun 23, 2024

@rzwitserloot the issue still very much exists in the latest VSCode v1.90.2 with the latest RedHat Java extension v1.31.0. Please re-open.

@foxpluto
Copy link

The only possibility to make Lombok work in VSC is to install the latest Language Support for Java(TM) by Red Hat that in the moment I am writing is: v1.31.0 and change the installed Lombok plugin with the SNAPSHOT one.
On my MAC the plugin is here:

~/.vscode//extensions/redhat.java-1.30.0-darwin-arm64/lombok/lombok-edge-SNAPSHOT.jar

The SNAPSHOT could be downloaded from here: Lombok Cutting Edge build
We need a new official Lombok jar with the fix !!!

Thanks,
S.

@raffian
Copy link

raffian commented Jun 24, 2024

No need to do that, just install pre-release version of RedHat Language Support for Java for VSCode v1.32.2024062308 as it already comes with lombok-1.18.33.jar - same as edge-SNAPSHOT version according to the page you cited. I've been using the pre-release extension for about a week now, no problems at all - no lombok builder errors.

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