web-dev-qa-db-ja.com

原因:Java.lang.ClassNotFoundException:ロンボク使用時のcom.Sun.tools.javac.code.TypeTags

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を試してみました。それらはすべて同じ問題を抱えています。

13
Kai Liu

Java-10およびLombok 1.18.2を使用して、Mavenプロジェクトの問題を解決できます。

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

lombokバージョンを変更しましたが、うまくいきました。

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

私は同じ問題を抱えており、pom.xmlにこのコードを追加することで解決します

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

これを解決しました:

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

Lombokバージョンを1.16.18から1.16.22にアップグレードすることで問題を解決しました。 .22を超える互換性のあるバージョンは、このトリックを実行する可能性があります。

2
klauss

私のプロジェクトはJava1.8を使用していますが、この問題はlombok 1.18.4を使用して解決されています。

0
车言涛

Lombokバージョンをアップグレードするだけで、古いバージョンの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>
0
DaddyMoe