2017-10-26 3 views
3

でロンボクを使用する方法:Kapt3を使用している間、私はロンボク島でのJava/Kotlinアンドロイドアプリケーションを実行しようとするとKapt3

apply plugin: 'kotlin-kapt' 

のjavacのコンパイルが多数

生成方法について
error: cannot find symbol 

で失敗します。

おそらく、スタブを生成するためにkaptのできないことによって引き起こされる:私は使用することができます古いkapt使用する

'kapt.generateStubs' is not used by the 'kotlin-kapt' plugin 

すべて前述の力を:

compileOnly "org.projectlombok:lombok:$lombokVer" 
annotationProcessor "org.projectlombok:lombok:$lombokVer" 
kapt "org.projectlombok:lombok:$lombokVer" 

kapt { 
    generateStubs = true 
} 

これをしかし、テスト中に失敗し、その結果私もデータバインディングライブラリを使用しているため、コンパイルしています:

何が問題になりましたか: タスク ':app:compileXDebugUnitTestJavaWithJavac'の実行に失敗しました。 java.lang.RuntimeException:データバインディングコンパイラオプションの解析に失敗しました。 Params: kapt.annotations:... \ app \ build \ tmp \ kapt \ xDebugUnitTest \ wrappers \ annotations.bscplayDebugUnitTest.txt kapt.kotlin.generated:... \ app \ build \ tmp \ kapt \ xDebugUnitTest \ kotlinGenerated

これは、他の一方で、ここで説明したようKapt3を使用するために私を強制的に: android databinding unit test error Failed to parse data binding compiler options.

誰もがロンボク島で、この問題を解決する方法を知っていますか?

注私は私の最初のソリューションを使用するヒントだったが、それは(Kotlin Support · Issue #1169 · rzwitserloot/lombok · GitHubごとに)データバインディングの問題につながるすべて:状況は、Androidスタジオ2.3.3でとAndroid Studioの3に同じである(Gradleのビルドツールと3.0 .0)。

+1

どうしてあなたはkotlinでlombokを使いたいのですか? kotlinを使用しているときにロンボクを使用してコードを強化するものはありません –

+0

実際にJavaで書かれた多くのクラスのLombokがまだ使用されているJava/Kotlinモジュールです。私はもちろん、プロジェクト全体がKotlinに移行されたときには、Lombokを使用する予定はありません(私は間もなく希望しますが、範囲は巨大です)。 –

+0

悪いパターンやコードを良いパターンに変換する時間がない場合、大きなプロジェクトは大きくはありません:) –

答えて

0

としては、コメントで@yanexで説明した:それは民間のjavac APIは、その仕事に行う使用しているため、

残念ながら、Kotlinは、ロンボクと互換性がありません。 kapt3はJavaコンパイラの上に構築されていますが、kaptはKotlinクラス用のJavaスタブを生成するので、元のクラスではなくスタブです。ところで、元のkaptは廃止され、Kotlin 1.2リリースの直後に削除されます。だから、Kotlin & kapt3に移行する時間があります。

関連する問題