Caused by: java.lang.ClassNotFoundException: com.s

2019-04-26 18:17发布

问题:

I have following dependency in pom.xml:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.8</version>
</dependency>

When I run mvn clean install, I have following error:

Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags
    at java.lang.ClassLoader.findClass (ClassLoader.java:711)
    at java.lang.ClassLoader.loadClass (ClassLoader.java:566)
    at lombok.launch.ShadowClassLoader.loadClass (ShadowClassLoader.java:418)

I tried to use java 1.8, 1.9, 1.10. And I tried lombok 1.6.10, 1.6.12, 1.6.20. All of them have the same problem.

回答1:

I have the same problem and I solve it by adding this code in pom.xml

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>1.18.0.0</version>
</dependency>


回答2:

I am able to solve the problem in my maven project with Java-10 and Lombok 1.18.2.

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


回答3:

I had changed the lombok version and it worked for me.

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


回答4:

Solved this by:

1) download the lombok-edge.jar,

2) using following dependency:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.21</version>
            <scope>system</scope>
            <systemPath>/Users/xxx/Downloads/lombok-edge.jar</systemPath>
        </dependency>


回答5:

my project uses java1.8,and this problem have be solved by using lombok 1.18.4.



回答6:

I always managed to resolve this issue with numerous old projects using older version of Lombok by simply upgrading the Lombok version

With this upgrade of Lombok; for projects with heavy memory during test running phases I have also had to start specifying memory configurations for maven-surefire-plugin which generally seems to now need more memory to avoid Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? errors

See below for example working pom.xml configs

<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">

  </properties>
    ...
    <lombok.version>1.18.2</lombok.version>
    ...
  </properties>

  <dependencies>
    ...
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
      <scope>provided</scope>
    </dependency>
    ...
  </dependencies>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!--Extra memory to prevent jvm crash during heavy Integration/unit test with newer lombok and jdk8-->
          <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
        </configuration>
      </plugin>
    ...
    </plugins>
  </build>
</project>


回答7:

Solved the issue by upgrading lombok version from 1.16.18 to 1.16.22 . I suspect any compatible version higher than .22 might do the trick.