Android KotlinKaptExecutionエラーコレクション

フォルダの名前は次のようにinterfaceなります

Moduleレベルの下にbuild.gradle導入され、apply plugin: 'kotlin-kapt'ビルド時に次のエラーメッセージが表示されます。

public abstract class BaseStateActivity<T extends androidx.databinding.ViewDataBinding, E extends xxxx.BaseVM> extends xxxxx.BaseVMActivity<T> implements xxxxx.IBindVm<E> {错误: 非法的类型开始
public abstract class BaseStateActivity<T extends androidx.databinding.ViewDataBinding, E extends xxxxx.BaseVM> extends xxxxx.BaseVMActivity<T> implements xxxxx.IBindVm<E> {错误: 需要';'
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)    
問題が解決しました:

残念ながら、この問題は私を長い間悩ませてきました。後でスタックオーバーフローで不運な男がこのピットに足を踏み入れたのを見ました。彼は私より数日前に足を踏み入れ、それを解決するのに1週間かかりましたが、幸いにも彼はそれを解決しました。0.0。この問題の理由は、私のプロジェクトにinterface名前が付けられたフォルダーがあり、interfaceこのフォルダーにインターフェイスがあるためです。このキーワードは、アノテーターを混乱させるためのフォルダー名として使用され、最終的にスタブが生成されます。interface何か問題が発生しました。後でフォルダ名を別の名前に変更しました。

ソース

DataBinding文法は

以下が表示されたらlog、マウスでクリックしRun with --stacktraceて詳細情報確認する必要あります

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

私のカスタムビューは双方向バインディング機能を追加しますが、それを書いたときに無視して、このように書きました

app:y_change_content="@={}"

次に、ビルド時に印刷をログに記録しWhat went wrong、クリックしRun with --stacktraceて次の情報取得します

Caused by: android.databinding.tool.util.LoggedErrorException: Found data binding error(s):
[databinding] {"msg":"Syntax error: no viable alternative at input \u0027\u003cEOF\u003e\u0027","file":"app\\src\\main\\res\\layout\\fragment_employment_info.xml","pos":[{"line0":54,"col0":41,"line1":54,"col1":44}]}

上記のプロンプトは非常に明確で、構文が間違っており、エラーの行が特定されています。

JavaKotlinクラスの名前はクラスの名前と同じです

Javaクラスの名前はKotlinクラスと同じです。Studioのディレクトリに赤い線のプロンプトが表示されない場合があります。この時点で、別のクラスを作成しますKaptExecution。クリックするRun with --stacktraceと、次の情報が表示されます。

Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing ...
Caused by: java.lang.reflect.InvocationTargetException
Caused by: com.sun.tools.javac.util.ClientCodeException: java.lang.IllegalStateException: node.sym must not be null
Caused by: java.lang.IllegalStateException: node.sym must not be null

クラス名の下で再度、十分に再構築します。
ソース


  • 2020/12/18更新

インターフェイスはパッケージ名を明確に記述していませんでした。InvocationTargetException

  • 問題:導入後apply plugin: 'kotlin-kapt'、ビルドプロジェクトがエラーを報告し、私が使用していました。koin依存性注入のためにそれをビルドした後、私が見つけた。Retrofit動的プロキシというAPIオブジェクトれた作成が見つかりませんでした私が導入を削除する限り、それは。kotlin-kaptすることができ正常にコンパイルされます。
  • 理由:最終的に、プロキシインターフェイスクラスファイルにパッケージ名がないことが判明したため、インターフェイスを使用するすべてのクラスをコンパイルしたときに動的プロキシインターフェイスが見つかりませんでした。ただし、削除kotlin-kapt後、パッケージ名は見つかりません。プロジェクトのコンパイルには影響しません。
    例:
// 包名.如果把这个去掉,我用的是koin进行依赖注入的,当引入'kotlin-kapt'编译就会提示EZLoanApiService这个接口找不到.移除就能正常编译.
package com.xxx.xxx.netxx
interface ApiService {
    
    
    @GET(CHECK_PHONE_EXIST)
    suspend fun checkPhone(@QueryMap mData: TreeMap<String, Any>): BResponse<CheckPhoneExist>
}

おすすめ

転載: blog.csdn.net/MoLiao2046/article/details/108322320