引起:java.lang.ClassNotFoundException:com.sun.tools.javac.code.TypeTags使用lombok时

时间:2018-04-10 18:34:16

标签: maven java-8 maven-plugin lombok

我在pom.xml中有以下依赖:

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

当我运行mvn clean install时,我遇到以下错误:

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)

我尝试使用java 1.8, 1.9, 1.10。我尝试了lombok 1.6.10, 1.6.12, 1.6.20。所有这些都有同样的问题。

9 个答案:

答案 0 :(得分:5)

我有同样的问题,我通过在pom.xml中添加此代码来解决了这个问题

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

答案 1 :(得分:4)

我可以使用Java-10和Lombok 1.18.2解决我的Maven项目中的问题。

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

答案 2 :(得分:3)

我更改了lombok版本,它对我有用。

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

答案 3 :(得分:2)

解决了这个问题:

1)下载lombok-edge.jar,

2)使用以下依赖:

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

答案 4 :(得分:1)

通过将lombok版本从1.16.18升级到1.16.22解决了该问题。我怀疑任何高于.22的兼容版本都可以解决问题。

答案 5 :(得分:0)

我的项目使用的是Java1.8,而使用lombok 1.18.4可以解决此问题。

答案 6 :(得分:0)

我总是设法通过简单升级Lombok版本来解决许多使用旧版本Lombok的旧项目的问题

这次龙目岛的升级;对于在测试运行阶段内存较大的项目,我还必须开始为maven-surefire-plugin指定内存配置,现在看来似乎通常需要更多内存来避免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? 错误

有关工作pom.xml配置的示例,请参见下文

<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 :(得分:0)

我将项目从JDK 8升级到JDK 12并使用gradle而不是maven并使用io.franzbecker:gradle-lombok gradle插件自动配置lombok时遇到了这个问题。

在这种情况下,将buildScript.dependencies从classpath "io.franzbecker:gradle-lombok:1.14"更改为classpath "io.franzbecker:gradle-lombok:3.2.0"对我有用。

答案 8 :(得分:0)

当我用brew安装maven并同时安装了Java.15.x并导致此错误时,发生了这种情况。

要进行验证,请在使用maven进行构建时添加调试选项-X,并检查maven使用的Java版本。

删除Java.15x目录,并在.bashrc中使用正确的Java版本设置JAVA_HOME。