2015-12-18 7 views
20

初めてプロジェクトロンボクを使用しています。ビルドを実行すると、プロジェクトをコンパイルするときに問題が発生します。プロジェクトロンボクアノテーションで注釈を付けたメソッドがと呼ばれる。プロジェクトロンボクアノテートメソッドにアクセスするとシンボルが見つかりません

これは注釈付きのパラメータです:

private @Getter @Setter String paymentNonce = null; 

と、この行に例えばmavenのビルドを壊す:

if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) { 

これは

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

Mavenの私の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コンパイル(javacの)で-processor <processorclass>を使用して-proc:noneまたは明示的に指定された注釈プロセッサを指定していることが考えられたJava 8

答えて

6

はのmaven-コンパイラプラグインV.2.3を使用して同じ問題を抱えていました。 3.5問題へのバージョンアップを更新した後2 が、これはアップ2.4maven-compiler-pluginをアップグレードし、要するに

+0

maven 3.0.5、Netbeans 8.0.2、java 1.8.0_72-internalと同じ経験をしています。 OpenJDK 64ビットサーバーVM 25.72-b05および1.14.8にダウングレードすると、正しくコンパイルされました。私は1.16で正しくコンパイルすることができましたが、しばらくして 'エラー:シンボルを見つけることができませんでした.' –

+0

私の答えを見て、それはロンボクの次のバージョンで修正されます。 – liudongmiao

+0

これは私の問題を解決しました!私の場合、GettersとSettersはAndroid Studioで生成されませんでした。 –

0

を使用していますか?私は1.16 versonが:(

+0

実際にログブックのバージョンを1.14.8にダウングレードすると、1.16以降の新しいバージョンのみが動作しません。 – simonC

+0

procでは何もありません。 – liudongmiao

30

が動作していない理由を見つけ、私はhaventは、このバージョンは、Mavenのビルドで動作1.14.8にロンボクをダウングレードした

+0

この解決策は 'maven-compiler-plugin:3.5.1'でも有効です。 – Stephan

2

を助け、または以下にlombokをダウングレード希望

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.5</version> 
    <configuration> 
     ... 
    </configuration> 
</plugin> 

を消滅しました。

2.4以下 maven-compiler-plugin$と名前で javax.annotation.processing.Processorをサポートしていないようです。

更新:あなたはforkmaven-compiler-pluginを設定、または1.8.6plexus-compiler-javacを更新することができます。 (maven-compiler-plugin2.3.21.8.1を必要とし、2.41.8.6が必要です)

1.16ので、ロンボクはロンボク島の内部クラスのIDEのプロモーションを防ぐShadowClassLoaderを、使用しています。ただし、クラスローダーがorg.codehaus.plexus.compiler.javac.IsolatedClassLoaderの場合はShadowClassLoaderを使用しません。 (ロンボク島人はplexus-compiler-javacに関連する他の問題かもしれを解決するためにハードコードを使用する理由私は知られていない。)

maven-compiler-plugin2.4、というか、plexus-compiler-javac1.8.6を、org.codehaus.plexus.compiler.javac.IsolatedClassLoader使用していない、それが再び動作するようにします。あなたが、その場合には、静的なクラスでロンボク島のアノテーションを使用している場合は、それがJDKをアップグレードすることによって解決された私の場合は

+2

[これを解決するプルリクエスト](https://github.com/rzwitserloot/lombok/pull/1138)がマージされ、lombok 1.16.9+になります。 [プレビュー用のjarが利用できます](https://projectlombok.org/download-edge.html)ので、試してフィードバックをください。 –

0

(今1.8.0_92、1.8.0_66た)

+0

これはjdkに関連する問題ではありません。 – liudongmiao

+0

[lombokの変更履歴](https://projectlombok.org/changelog.html)の特定のJDKバージョンについての記述があります。 この特定の問題がjdkに関連しない理由が分かっている場合は、教えてください。 – Vituel

1

あなたはの完全な名前を言及する必要がありますクラスie。 @Data@lombok.Dataの代わりに。これは私のために働いています。

1

静的インポートでロンボク関連の静的メソッド(主に@Builder)を使用している場合は、(コードの他の部分でも)同様の問題が発生する可能性があります。

それについての未解決の問題があります:https://github.com/rzwitserloot/lombok/issues/979

現在の回避策は、単に、例えば、staticインポートを使用しないことです

import static my.org.Foo.FooBuilder 
... 
FooBuilder builder = Foo.builder(); 

に変更します

Foo.FooBuilder builder = Foo.builder(); // note >>Foo.<<FooBuilder; without static import 
+0

+1これは私の問題を解決しました。私が今使っているコメントにはもう一つの回避策があります: "回避策はクラス内のビルダーを返すスタティックメソッドを作成し、ロンボクの代わりにそのクラスを使用することです。" – YingYang

2

私のソリューションは、ロンボクのパッケージ名と注釈の前に付けることでした。

@lombok.Builder 
@lombok.experimental.Accessors(prefix = "m", chain = true) 

ではなく

@Builder 
@Accessors(prefix = "m", chain = true) 
0

同じ問題に直面し、この回避策によって、これを解決dependencies.I内の「ロンボク島」モジュールのパラメータを指定してみてください。

関連する問題