私は初めてプロジェクトlombokを使用していますが、ビルドを実行するとmavenを介してプロジェクトをコンパイルする際に問題が発生します。プロジェクトlombokアノテーションが付けられたメソッドが呼び出されるエラーを受け取ります。
これは注釈付きパラメーターです。
private @Getter @Setter String paymentNonce = null;
そしてこの行では、例えば、Mavenはビルドを中断します:
if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) {
これは私のMavenの依存関係です
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.4</version>
</dependency>
mavenエラー:
[INFO] Compiling 158 source files to C:\Java\repos\luna\cloudflow\cloudflow-ejb\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \Java\repos\luna\cloudflow\cloudflow-ejb\src\main\Java\si\arctur\controller\PaymentProcessor.Java:[94,38] error: cannot find symbol
[ERROR] \Java\repos\luna\cloudflow\cloudflow-ejb\src\main\Java\si\arctur\controller\PaymentProcessor.Java:[97,106] error: cannot find symbol
[ERROR] \Java\repos\luna\cloudflow\cloudflow-ejb\src\main\Java\si\arctur\controller\PaymentProcessor.Java:[142,2] error: cannot find symbol
[ERROR] \Java\repos\luna\cloudflow\cloudflow-ejb\src\main\Java\si\arctur\controller\ShoppingCart.Java:[27,6] error: cannot find symbol
[ERROR] \Java\repos\luna\cloudflow\cloudflow-ejb\src\main\Java\si\arctur\controller\ShoppingCart.Java:[32,75] error: cannot find symbol
.....
私はJava 8を使用しています
私はロンボクを1.14.8にダウングレードし、このバージョンはmavenビルドで動作しますが、1.16バージョンが動作していない理由は見つかりませんでした:(
Maven-compiler-plugin v.2.3.2を使用して同じ問題を抱えていましたが、バージョン3.5まで更新した後、問題はなくなりました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
...
</configuration>
</plugin>
お役に立てれば
私は実際にここに投稿された回答に従うことでこれを解決することができました:
基本的に、lombok
をmaven-compiler-plugin
<annotationProcessorPaths>
に追加する必要がありました
Lombok関連の静的メソッド(主に@Builder)を静的インポートで使用している場合、同様の問題が発生する可能性があります(コードの他の部分でも)。
それに関して未解決の問題があります: https://github.com/rzwitserloot/lombok/issues/979
現在の回避策は、静的インポートを使用しないことです。変化する
import static my.org.Foo.FooBuilder
...
FooBuilder builder = Foo.builder();
に:
Foo.FooBuilder builder = Foo.builder(); // note >>Foo.<<FooBuilder; without static import
つまり、maven-compiler-plugin
をアップ2.4
にアップグレードするか、lombok
を以下の1.14.*
にダウングレードします。
maven-compiler-plugin
以下の2.4
は、javax.annotation.processing.Processor
という名前の$
をサポートしていないようです。
更新:maven-compiler-plugin
をfork
に構成するか、plexus-compiler-javac
を1.8.6
に更新できます。 (maven-compiler-plugin
2.3.2
には1.8.1
が必要で、2.4
には1.8.6
が必要です)
1.16
なので、lombokはShadowClassLoader
を使用します。これは、lombokの内部クラスのIDEプロモーションを防ぎます。ただし、ShadowClassLoader
ifクラスローダーはorg.codehaus.plexus.compiler.javac.IsolatedClassLoader
です(ロンボク人がハードコードを使用して他の問題を解決する理由はわかりませんmayplexus-compiler-javac
に関連します。)
maven-compiler-plugin
2.4
、またはplexus-compiler-javac
1.8.6
はorg.codehaus.plexus.compiler.javac.IsolatedClassLoader
を使用しないため、再び機能します。
私の解決策は、注釈の前にlombokパッケージ名を付けることでした。
@lombok.Builder
@lombok.experimental.Accessors(prefix = "m", chain = true)
のではなく
@Builder
@Accessors(prefix = "m", chain = true)
その場合、静的クラスでロンボク注釈を使用している場合、クラスのフルネームを言及する必要があります。の代わりに @Data
から@lombok.Data
。これは私のために働いた。
依存関係内の「lombok」モジュールのパラメーターを指定してみてください。同じ問題に直面し、この回避策でこれを解決しました。
わかりませんが、何らかの理由で問題が解決します。
@Builderを使用してビルドメソッドを生成する2つのクラスがあります。しかし、1つは正常で、もう1つは異常です。私はすべてをチェックし、それは大丈夫のようです。しかし、mvn
を実行してプロジェクトをコンパイルすると、エラーは次のようになります。
シンボルメソッドbuilder()が見つかりません
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class A {
}
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class B {
}
クラスAは正しくコンパイルされますが、クラスBは上記の問題を報告します。
Lombok JARのバージョンを置き換えようとしましたが、バージョンを最新に設定しても大丈夫ではありません。
そこで、参照するクラスごとにLombokをインポートしようとしました。
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class B {
}
できます!バグのようです。
私の場合、JDKをアップグレードすることで解決しました(1.8.0_66、現在は1.8.0_92)
Javaコンパイル(javac))で-proc:none
を使用して-processor <processorclass>
を指定したか、明示的に注釈プロセッサを指定した可能性がありますか?