Search code examples
javamavenlombokjava-11intellij-lombok-plugin

[ERROR]: cannot find symbol variable log when building with maven and lombok


I am trying to build a Java 11 project with maven and lombok's @Slf4j Logger, but maven does not recognize the log variables. IntelliJ does though and is able to build the project.

The error is

[ERROR]: cannot find symbol variable log 

Project and Module SDK is both Java 11. Lombok Version is 1.18.2:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

My maven compiler setup:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
                <forceJavacCompilerUse>true</forceJavacCompilerUse>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.12</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

I already tried:

  • turning Annotaion Processing off and on again
  • reinstalling Lombok plugin
  • clearing .m2/repository folder
  • manually adding lombok.jar as Annotation Processor
  • adding Lombok path to maven-compiler-plugin list of Annotation Processor

Solution

  • This is a really minimal example configuration for using the @Slf4j lombok logging annotation.

    You need a logging facade and an implementation, in this case I'm going to use slf4j (as facade) and logback (as implementation).


    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>untitled</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.30</version>
            </dependency>
    
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
    </project>   
    

    main.java

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class Main {
    
        public static void main(String[] args) {
            log.debug("Hello");
        }
    }
    

    If you get some trouble try always to force the maven dependencies updates running in your project folder mvn -U clean package and reimporting maven project in your IDE

    See screenshot