projectlombok / lombok

Very spicy additions to the Java programming language.
https://projectlombok.org/
Other
12.86k stars 2.38k forks source link

NullPointerException: null at lombok.eclipse.handlers.HandleEqualsAndHashCode.createEquals(HandleEqualsAndHashCode.java:660) #1542

Open wodencafe opened 6 years ago

wodencafe commented 6 years ago

I encountered this issue while working on my Java class, and Eclipse popped up the error dialog and alerted me of this, with the message Lombok annotation handler class lombok.eclipse.handlers.HandleEqualsAndHashCode failed

REPORT

anonymousId         3cdb9a15-de79-43b1-af71-78b08c18e07b
name                Woden Cafe
email               wodencafe@gmail.com
comment             
eclipseBuildId      4.7.1.M20171009-0410
eclipseProduct      org.eclipse.epp.package.java.product
javaRuntimeVersion  1.8.0_151-b12
osgiWs              gtk
osgiOs              Linux
osgiOsVersion       4.13.0
osgiArch            x86_64
severity            UNKNOWN

STATUS

pluginId            org.eclipse.jdt.core
pluginVersion       3.13.50.v20171007-0855
code                0
severity            4
message             Lombok annotation handler class lombok.eclipse.handlers.HandleEqualsAndHashCode failed
fingerprint         e98716dae8d892e0e3dd47b44282a8de

Exception:java.lang.NullPointerException: null
     at lombok.eclipse.handlers.HandleEqualsAndHashCode.createEquals(HandleEqualsAndHashCode.java:660)
     at lombok.eclipse.handlers.HandleEqualsAndHashCode.generateMethods(HandleEqualsAndHashCode.java:261)
     at lombok.eclipse.handlers.HandleEqualsAndHashCode.handle(HandleEqualsAndHashCode.java:152)
     at lombok.eclipse.HandlerLibrary$AnnotationHandlerContainer.handle(HandlerLibrary.java:106)
     at lombok.eclipse.HandlerLibrary.handleAnnotation(HandlerLibrary.java:233)
     at lombok.eclipse.TransformEclipseAST$AnnotationVisitor.visitAnnotationOnType(TransformEclipseAST.java:220)
     at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:96)
     at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:223)
     at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:63)
     at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:223)
     at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:58)
     at lombok.eclipse.EclipseAST.traverse(EclipseAST.java:216)
     at lombok.eclipse.TransformEclipseAST.go(TransformEclipseAST.java:186)
     at lombok.eclipse.TransformEclipseAST.transform(TransformEclipseAST.java:150)
     at lombok.eclipse.TransformEclipseAST.transform_swapped(TransformEclipseAST.java:102)
     at sun.reflect.GeneratedMethodAccessor33.invoke(null:-1)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at lombok.launch.PatchFixesHider$Util.invokeMethod(PatchFixesHider.java:115)
     at lombok.launch.PatchFixesHider$Transform.transform_swapped(PatchFixesHider.java:182)
     at org.eclipse.jdt.internal.compiler.parser.Parser.endParse(Parser.java:10508)
     at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11689)
     at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11913)
     at org.eclipse.jdt.internal.codeassist.select.SelectionParser.parse(SelectionParser.java:1493)
     at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:11870)
     at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:10280)
     at org.eclipse.jdt.internal.codeassist.select.SelectionParser.dietParse(SelectionParser.java:1324)
     at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:964)
     at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:163)
     at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:378)
     at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:372)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelections.resolveJavaElementFromTypeRootInEditor(JavaElementSelections.java:138)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelections.resolveJavaElementFromEditor(JavaElementSelections.java:119)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelections.resolveJavaElementFromEditor(JavaElementSelections.java:102)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelectionService.handleSelectionInEditor(JavaElementSelectionService.java:108)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelectionService.access$1(JavaElementSelectionService.java:105)
     at org.eclipse.recommenders.internal.rcp.JavaElementSelectionService$1.run(JavaElementSelectionService.java:82)
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
     at java.lang.Thread.run(Thread.java:748)

BUNDLES

name                org.eclipse.jdt
version             3.13.1.v20171009-0410

name                org.eclipse.jdt.core
version             3.13.50.v20171007-0855

name                org.eclipse.recommenders.rcp
version             2.4.10.v20170911-1410
rspilker commented 6 years ago

What version of Lombok do you use. Is this reproducible, what source code did you write that triggered this bug?

wodencafe commented 6 years ago

Hi @rspilker , It's the latest lombok (1.16.18), it only occurred once, and it was while working with this class:


import java.util.HashSet;
import java.util.Optional;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinTable;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.validation.constraints.Size;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@ToString(callSuper = true)
@NoArgsConstructor
@Entity
@Table(name = "VEHICLE")
@PrimaryKeyJoinColumn
@EqualsAndHashCode(callSuper = true)
public class Vehicle extends Equipment
{

    @Setter
    @Size(min = 17, max = 17)
    @Column(nullable = true)
    private String vin;

    @Getter
    @ElementCollection
    @JoinTable
    @Column(nullable = false)
    @Enumerated(EnumType.ORDINAL)
    private Set<VehicleFeature> features = new HashSet<>();

    @Setter
    @Column(nullable = true)
    private VehicleType type;

    @Setter
    @Column(nullable = true)
    private TransmissionType transmission;

    @Setter
    @Column(nullable = true)
    private Integer horsePower;

    public Optional<String> getVin()
    {
        return Optional.ofNullable(vin);
    }

    public Optional<VehicleType> getType()
    {
        return Optional.ofNullable(type);
    }

    public Optional<TransmissionType> getTransmission()
    {
        return Optional.ofNullable(transmission);
    }

    public Optional<Integer> getHorsePower()
    {
        return Optional.ofNullable(horsePower);
    }

}
flavius commented 7 months ago

Same error, using 1.18.30 (currently latest)