chiefpika
chiefpika

Reputation: 537

Lombok getter setter cannot find symbol

I'm using Intellij and trying to apply lombok to the project. But it keeps saying "cannot find symbol". Here's a quick sample of my code.

Class

import lombok.*;

@Data
public class Product {

    private String name;
    private Integer price;

    public Product(String name, Integer price){
        this.name = name;
        this.price = price;
    }
}

Main

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionMain {
    public static void main(String[] args) {

        Collection<Product> products = new ArrayList<>();
        Product door = new Product("DOOR",90);
        Product bed = new Product("BED",60);
        Product ipad = new Product("iPad",15);

        products.add(door);
        products.add(bed);
        products.add(ipad);

        final Iterator<Product> productIterator = products.iterator();

        while(productIterator.hasNext()){
            Product product = productIterator.next();
            System.out.println(product.getPrice());
        }

    }
}

and the error says

CollectionMain.java:23: error: cannot find symbol System.out.println(product.getPrice()); ^ symbol: method getPrice() location: variable product of type Product

I have enabled the annotation processor enter image description here

plugin

enter image description here

Upvotes: 18

Views: 22877

Answers (8)

Ashfaq M
Ashfaq M

Reputation: 1

Alternatively you can run your Project using Jar file

  1. mvn clean or mvn clean install
  2. Run Jar file - Java -jar "Jar file name"

Note : This way problem is not resolved completely but you can build and run your project.

Upvotes: -2

Susobhan Das
Susobhan Das

Reputation: 1174

Working solution is to add both compileOnly and annotationProcessor with lombok. in build.gradle

compileOnly 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.projectlombok:lombok:1.18.34'

Lombok Gradle

Upvotes: 0

Ravi Thapa
Ravi Thapa

Reputation: 107

If you did the correct configuration and IDE setting is correct(Enable annotation procession)

and Other settings are correct then you can add following in to the pom.

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>
        
        
        
          <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                       ..........................
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
                
          </plugins>

Upvotes: 3

Mr. BoFrost
Mr. BoFrost

Reputation: 103

For me I had to use the Lombok Gradle plugin as stated in the Lombok installation guide for Gradle:

plugins {
  id 'java'
  id 'io.freefair.lombok' version '8.3'
}

Upvotes: 0

Venya  Bohdan
Venya Bohdan

Reputation: 1

I faced the same error when tried to build my project (gradle). I used jdk-15 on my project, but then installed jdk-17 on my computer (even without changing sdk in the project) and the problem happened. To fix the issue I uninstalled jdk-17 from the computer (deleting sdk on project is not enough)

Upvotes: 0

Ruchira Nawarathna
Ruchira Nawarathna

Reputation: 1507

I had the same issue. But my solution was bit different.

My project is on java 8 but IDEA SDK was set to java 17. Once I changed it to java 8 issue was solved.

  1. Go to File > Project Structure > Project
  2. Change SDK enter image description here
  3. Apply > OK
  4. File > Invalidate and Restart

Upvotes: 3

Andrii Brazhnyk
Andrii Brazhnyk

Reputation: 1

For some reason the Maven repository only provides you with the 'compileOnly' dependency for the Gradle builder. However, if you look in the Lombok documentation you will find that you also need to use the 'annotationProcessor'.

https://projectlombok.org/setup/gradle

Upvotes: 0

chiefpika
chiefpika

Reputation: 537

I didn't put

annotationProcessor 'org.projectlombok:lombok:1.18.12'

in my build.gradle

problem solved.

Upvotes: 24

Related Questions