Alvaro Berrocal
Alvaro Berrocal

Reputation: 41

Lombok Builder not find in maven compilation

I'm trying to create a static method in order to ease the builder usage and return the created builder to continue creating the object if it's needed:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Foo {

    private String submit;

    private String modify;

    public static Foo.FooBuilder ofSubmit(String submit) {

        return Foo.builder()
                .submit(submit);
    }

}

In IntelliJ works properly but when I compile with maven I get next error:

diagnostic: /src/main/java/com/Foo.java:33: error: cannot find symbol
    public static Foo.FooBuilder ofSubmit(String pan,
                     ^
  symbol:   class FooBuilder
  location: class com.Foo

I'm using Lombok 1.18.20

Any idea?

//EDIT

Include the maven configuration:

maven-compiler-plugin whit mapstruct compatibility configuration:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${org.projectlombok.version}</version>
                        </path>
                        <!-- This is needed when using Lombok 1.18.16 and above -->
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>0.2.0</version>
                        </path>
                        <!-- Mapstruct should follow the lombok path(s) -->
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${org.mapstruct.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>

Upvotes: 2

Views: 3054

Answers (2)

Amadis
Amadis

Reputation: 11

If you've tried this and many other methods, but it still complains about "symbol not found...", you may have missed one last step before you break your computer. I've been trying to mess with dependencies for days, but nothing has happened, except for new errors. If you're at this point, but haven't tried to Invalidate caches and restarting your projects, give it a try. This is the only thing that worked for me.

Java 21.

Upvotes: 0

Lis Lis
Lis Lis

Reputation: 31

I was searching like you. I had "Cannot find symbol" while making a "clean install" with maven whereas i had configured well my Intellij as suggested in Plugins-->Compiler-->Annotations--> Activate Annotation Processors.

Finally, i noticed in you post that i was using like Mapstruct but i had added lombo plugin separately in my pom.xml.

And now i configured like this and it works fine :

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source> <!-- depending on your project -->
                <target>1.8</target> <!-- depending on your project -->
                <encoding>UTF-8</encoding>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                    <!-- This is needed when using Lombok 1.18.16 and above -->
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </path>
                    <!-- other annotation processors -->
                </annotationProcessorPaths>
            </configuration>
        </plugin>

Upvotes: 2

Related Questions