เกิดความล้มเหลวขณะดำเนินการ org.jetbrains.kotlin.gradle.internal.KaptExecution


97

ทันใดนั้นฉันก็เริ่มได้รับข้อผิดพลาดนี้และฉันไม่รู้ว่าทำไมถ้าใครแจ้งให้ฉันทราบว่าข้อผิดพลาดนี้อยู่ที่ไหนก็จะเป็นประโยชน์มากพอ เท่าที่ฉันจะได้รับก็เพราะการอัปเดตใหม่ของสตูดิโอ android สรุปโดยละเอียดของข้อผิดพลาดที่ฉันได้รับ

Task :app:kaptDebugKotlin
    ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1C:\Users\shubh\Downloads\MarginCalculator\app\build\generated\source\kapt\debug\com\kotlin_developer\margincalculator\DataBinderMapperImpl.java:10: error: cannot find symbol
    import com.kotlin_developer.margincalculator.databinding.FragmentCalculatorScreenBindingImpl;

    symbol:   class FragmentCalculatorScreenBindingImpl

    Task :app:kaptDebugKotlin FAILED
    location: package com.kotlin_developer.margincalculator.databinding
    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)

* 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.

* Get more help at https://help.gradle.org

BUILD FAILED in 17s
29 actionable tasks: 27 executed, 2 up-to-date

โปรดแสดงรหัสของคุณในbuild.gradleไฟล์
Sergey

โปรดแสดงรหัส DataBinderMapperImpl.java ด้วย
Sergey

3
คุณได้อัปเดตเป็น Android Studio 4 แล้วหรือยัง? pb เดียวกันที่นี่
Samuel Eminet

2
ฉันอัปเดตเป็น Android Studio 4 และฉันได้รับข้อผิดพลาดเดียวกันกับการใช้ห้องฉันสามารถแก้ไขได้ชั่วคราวโดยเปลี่ยนหนึ่งในคำถามของฉัน ตอนแรกฉันมีข้อความค้นหานี้: "SELECT case_name FROM SavedCases" จากนั้นเปลี่ยนเป็น "SELECT * FROM SavedCases" และข้อความแสดงข้อผิดพลาดก็หายไป ด้วยเหตุผลบางประการฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามค้นหาเฉพาะคอลัมน์ที่ระบุเท่านั้น นี่ไม่ใช่วิธีแก้ไขที่ดีที่สุดสำหรับปัญหาและฉันหวังว่าจะมีคนแก้ไขได้ดีขึ้น
Hani

ฉันพบข้อผิดพลาดที่คล้ายกันและพบวิธีแก้ปัญหาที่เหมาะกับฉัน คุณอาจเคยทำสิ่งที่คล้ายกัน stackoverflow.com/questions/63133657/…
Mustaqode

คำตอบ:


134

UI ของ Android Studio เพิ่งซ่อนข้อผิดพลาด ...

เมื่อเกิดข้อผิดพลาดจะไฮไลต์รายการในมุมมองรายการและแสดงข้อความที่ไม่ช่วยเหลือในมุมมองเทอร์มินัล ไม่ดีไม่ดี

หากต้องการค้นหาข้อผิดพลาดจริงให้เลือกรายการรูทในมุมมองรายการเพื่อให้ Android Studio แสดงเอาต์พุตบิลด์ทั้งหมดในมุมมองเทอร์มินัลจากนั้นเลื่อนเพื่อค้นหาข้อผิดพลาด ดีดี


2
หากคุณมีข้อผิดพลาด compile-time Room (DB) ก็จะแสดงเช่นนั้นนั่นหมายความว่าหนึ่งหรือบางส่วนของคำถามของคุณไม่ถูกต้อง
Idan Damri

51

บางทีฉันอาจจะช้าไปหน่อยสำหรับคำตอบ แต่อย่างไรก็ตามฉันก็ได้รับข้อผิดพลาดเดียวกัน ความล้มเหลวในการสร้างอาจเกิดจากข้อผิดพลาดบางอย่างที่ Android Studio ไม่สามารถชี้ให้เห็นได้อาจเนื่องมาจากขนาดโครงการมีขนาดใหญ่มาก

นี่คือวิธีง่ายๆในการชี้ให้เห็นข้อผิดพลาดที่แน่นอน

  1. ในสตูดิโอของ Android ไปวิเคราะห์เมนูและคลิกที่ตรวจสอบรหัส ; ตรวจสอบโครงการทั้งหมดคลิกตกลงและรอให้การตรวจสอบเสร็จสิ้น

    ตรวจสอบรหัส

  2. ตอนนี้คุณจะเห็นแท็บที่จะชี้ข้อผิดพลาดคำเตือนและอื่น ๆ ทั้งหมดและคุณสามารถแก้ไขปัญหาที่แท้จริงได้แล้ว

    แท็บข้อผิดพลาด


2
ใช่มันแสดงข้อผิดพลาดอย่างแน่นอน (ฉันทำผิดพลาดใน XML)
Hari Shankar S

1
ฉันไม่เข้าใจว่าเหตุใด Android Studio จึงไม่แสดงข้อผิดพลาดโดยตรงเมื่อบิวด์ล้มเหลวจึงไม่สมเหตุสมผล ขอบคุณสำหรับสิ่งนี้ช่วยฉันได้มาก
moyo

29

วิธีค้นหาว่าปัญหาพื้นฐานคืออะไรคือการรันคำสั่งต่อไปนี้:

./gradlew assembleDebug --stacktrace

14

ฉันมีข้อผิดพลาดเดียวกันมาระยะหนึ่งแล้วฉันก็เริ่มตรวจสอบแพ็คเกจอื่น ๆ ที่ฉันรู้ว่าฉันพิมพ์ผิดพลาดในรหัสฐานข้อมูลของฉัน ดังนั้น "ไปที่ฐานข้อมูลของคุณและไฟล์คลาสกิจกรรมอื่น ๆ คุณอาจพบข้อผิดพลาดที่นั่น"


4
ผิดพลาดแบบไหน
Mustaqode

สำหรับฉันคือข้อผิดพลาดในกราฟการนำทาง
Jorge Casariego

ในกรณีของฉันฉันลืมเพิ่ม@Daoในอินเทอร์เฟซ MyDao
Ishaan Kumar

14

ฉันได้รับปัญหาเดียวกันดังนั้นฉันจึงพยายามหาข้อมูลเพิ่มเติมโดยทำ

gradle-> app-> Tasks-> Build-> รวบรวม

หลังจากนี้ฉันได้รับข้อผิดพลาดที่แน่นอนว่า "เกิดข้อผิดพลาดขณะประมวลผลคำอธิบายประกอบ" ฉันตรวจสอบคลาส DAO ที่เพิ่งปรับแต่งเมื่อเร็ว ๆ นี้และพบว่าไม่มีการกำหนดประเภทการส่งคืนวิธีการใดวิธีหนึ่ง

//Before
@Query("SELECT countryName FROM country_table WHERE countryCode= :code")
    fun getCountryNameForCode(code: String)

//After
@Query("SELECT countryName FROM country_table WHERE countryCode= :code")
    fun getCountryNameForCode(code: String): String

gradle->app->Tasks->Build->assembleนั่นคืออะไร?
25

@ user25 Gradle tool window
Ajay Gurappanavar

11

เปลี่ยน

implementation "android.arch.persistence.room:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"

ถึง

 implementation "androidx.room:room-runtime:2.2.5"
 kapt  "androidx.room:room-compiler:2.2.5"

น่าอัศจรรย์มันช่วยได้
25

8

หากคุณอัปเกรดเป็น classpath 'com.android.tools.build:gradle:4.0.0' แทนที่เวอร์ชันก่อนหน้า

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.3'
}

และเปลี่ยน gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-   all.zip`

16
นี่ไม่ใช่วิธีแก้ปัญหาที่เหมาะสม
Shubham Tater

2
@ShubhamTater นี่คือการแก้ปัญหาจนกว่า gradle4.0.0 จะได้รับการแก้ไข นี่คือวิธีแก้ปัญหาชั่วคราว เมื่อแก้ไข gradle4.0.0 แล้ว เราสามารถอัปเดต gradle 4.0 ขึ้นไป
Mujeeb Rahaman T

3
ฉันพบข้อยกเว้นนี้ใน 4.0.1
ЯрославНестеров

8

สำหรับฉันข้อผิดพลาดในการอ้างอิงจำนวนมากและข้อผิดพลาดในนิพจน์ XML ที่DataBindingสร้างข้อผิดพลาดนี้

ฉันได้ลบ<variable/>ในlayoutไฟล์เพราะฉันคิดว่าฉันไม่ต้องการมันอีกต่อไป ฉันลืมไปว่าฉันมีตัวแปรที่อ้างอิงอยู่ในlayoutไฟล์

หลังจากสร้างโครงการแล้วสิ่งนี้ก่อให้เกิดข้อผิดพลาดซึ่งไม่สามารถนำเข้าBindingImplคลาสได้เนื่องจากไม่มีอยู่และข้อผิดพลาดนี้จะแสดงเป็นคำเตือนคู่ขนานกับKaptExecutionข้อผิดพลาดข้างต้นเท่านั้น

หลังจากค้นหาสักพักฉันพบข้อผิดพลาดนี้และแก้ไขได้ จากนั้นข้อผิดพลาดในการอ้างอิงจำนวนมากที่แสดงขึ้นเนื่องจากฉันเปลี่ยนชื่อบางสิ่งและไม่ได้เปลี่ยนชื่อในFragmentไฟล์ หลังจากแก้ไขข้อผิดพลาดเหล่านี้แล้วการสร้างก็เสร็จสมบูรณ์สำหรับฉันโดยไม่มีข้อผิดพลาดหรือคำเตือน


1
ข้อผิดพลาดนี้เกี่ยวข้องกับไฟล์ XML ที่การเชื่อมโยงฐานข้อมูลของเราใช้อยู่เสมอ
Shubham Tater


2

ในกรณีของฉันฉันใช้ห้องและหนึ่งในวิธี databasDao ของฉันมีพารามิเตอร์ที่ไม่ได้ใช้และน่าเสียดายที่สตูดิโอ android ไม่เตือนฉันอย่างถูกต้อง


1

ผมมีปัญหาเหมือนกัน. ให้ฉันแนะนำคุณตลอดตัวอย่างว่าฉันลงเอยกับปัญหาได้อย่างไรและวิธีที่ฉันแก้ไขบางทีคุณอาจได้ภาพที่ใหญ่ขึ้น

ก่อนที่จะแก้ไข

@Entity(tableName = "modules")
data class Module
(
    @PrimaryKey val id: Int,
    val name: String
)

@Entity(tableName = "sessions")
data class Session
(
    @PrimaryKey(autoGenerate = true) var id: Int,
    @ColumnInfo(name = "module_id") val moduleId: Int,
    @ColumnInfo(name = "start_time") val startTime: String,
    @ColumnInfo(name = "end_time") val endTime: String
)

data class ModuleSession
(
    @Embedded val module: Module,
    @Relation(
        parentColumn = "id",
        entityColumn = "module_id"
    )
    val sessions: List<Session>,
    @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false // The problem
)

ใน DAO

@Transaction
@Query("SELECT * FROM modules")
abstract suspend fun getModuleSession(): List<ModuleSession>

ข้อผิดพลาดที่ฉันได้รับคือ

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

ดังนั้นฉันจึงขุดลึกลงไปและพบข้อความด้านล่าง

The columns returned by the query does not have the fields [isUpdated] in com.gmanix.oncampusprototype.Persistence.ModuleSession even though they are annotated as non-null or primitive. Columns returned by the query: [id,name]
    public abstract java.lang.Object getModuleSession(@org.jetbrains.annotations.NotNull()

ฉันเอาฟิลด์ IsUpdated ออกจาก POJO ModuleSession และเพิ่มลงในตารางเซสชัน

หลังการเปลี่ยนแปลง

@Entity(tableName = "sessions")
data class Session
(
    @PrimaryKey(autoGenerate = true) var id: Int,
    @ColumnInfo(name = "module_id") val moduleId: Int,
    @ColumnInfo(name = "start_time") val startTime: String,
    @ColumnInfo(name = "end_time") val endTime: String,
    @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false
)

data class ModuleSession
(
    @Embedded val module: Module,
    @Relation(
        parentColumn = "id",
        entityColumn = "module_id"
    )
    val sessions: List<Session>
)

ในทางกลับกันตรวจสอบว่ามีฟิลด์ใด ๆ ในSELECTข้อความที่เป็นผู้ต้องสงสัยที่ก่อให้เกิดปัญหาหรือคุณสามารถใส่คำอธิบายประกอบได้ด้วย@Ignore

อย่างไรก็ตามคุณสามารถโพสต์รหัสของคุณได้หากคุณยังไม่สะดวก

ฉันหวังว่าอาจช่วยได้


ฉันมีทางออกสำหรับปัญหาของฉันฉันไม่รู้ว่ามันจะใช้ได้กับคุณหรือไม่ แต่จิตวิญญาณคือการตรวจสอบไฟล์ XML ของคุณที่คุณกำลังผูกมัดการผูกเป็นระบบเวลาคอมไพล์และใช้งานได้กับไฟล์ XML ดังนั้นตรวจสอบว่าไฟล์เหล่านั้นหรือไม่ เป็นข้อผิดพลาดใด ๆ ในนั้นจะแสดงข้อผิดพลาดประเภทนี้ ฉันแก้ไขไฟล์ XML ของฉันแล้วทุกอย่างก็ทำงานได้อย่างสมบูรณ์
Shubham Tater

1
ได้โปรด เจาะลึกลงไปได้อย่างไร
Simo Nyathi

1
@LeonardoSibela ขออภัยสำหรับสิ่งนั้นสิ่งที่ฉันตั้งใจจะพูดคือการเพิ่มตัวเลือก --stacktrace เมื่อสร้างเพื่อให้ฉันได้รับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด
Ali

คุณสามารถเพิ่มตัวเลือก --stacktrace จาก File-> Settings-> Build, Execution, Deployment-> Compiler-> Command-line Options Btw ในกรณีของฉันฉันไม่มีการพึ่งพา: การใช้งาน "androidx.room:room-ktx:$ room_version "
Amber

1

ตะโกนตอบคำตอบของ @Rene Spies ด้านบนฉันได้รับข้อผิดพลาดนี้ขณะทำงานกับ databinding ปรากฎว่าเครื่องมือสร้างไม่ชอบเมื่อคุณใส่@Bindableคำอธิบายประกอบบนฟิลด์ในตัวสร้างหลักของ a data classใน Kotlin

ดังนั้นอย่าทำสิ่งต่อไปนี้

data class MyAwesomePojo(
    @Bindable
    var firstname: String,
    var lastname: String
)

สิ่งที่คุณต้องทำแทนคือ

data class MyCorrectAwesomePojo(
    var lastname: String
):{
    @get:Bindable
    var firstname: String
        set(value){
            field = value
        }
}

โบนัส: อย่าลืมตรวจสอบค่าเดียวกันก่อนตั้งค่าเป็นฟิลด์หากคุณพยายามใช้การผูกแบบสองทางเหมือนฉันเพื่อป้องกันการวนซ้ำแบบไม่สิ้นสุดของการตั้งค่าและการรับ


ฉันมีทางออกสำหรับปัญหาของฉันฉันไม่รู้ว่ามันจะใช้ได้กับคุณหรือไม่ แต่จิตวิญญาณคือการตรวจสอบไฟล์ XML ของคุณที่คุณกำลังผูกมัดการผูกเป็นระบบเวลาคอมไพล์และใช้งานได้กับไฟล์ XML ดังนั้นตรวจสอบว่าไฟล์เหล่านั้นหรือไม่ เป็นข้อผิดพลาดใด ๆ ในนั้นจะแสดงข้อผิดพลาดประเภทนี้ ฉันแก้ไขไฟล์ XML ของฉันแล้วทุกอย่างก็ทำงานได้อย่างสมบูรณ์
Shubham Tater

1

ที่น่าสนใจคือฉันได้รับข้อผิดพลาดนี้เนื่องจากฉันได้เพิ่มคำอธิบายของชุดติดตั้งเพิ่มเติม ระวังอย่าสับสนระหว่างคำอธิบายของห้องและชุดติดตั้งเพิ่มเติม


1

ในกรณีของฉันมันเป็นเพราะฉันไม่ได้ใช้ Observable ใน ViewModel ของฉัน ฉันเพิ่ม EditText ลงในเค้าโครงข้อ จำกัด ด้วยandroid:text="@={addProductViewModel.inputProductName}"

เมื่อฉันติดตั้งObservableในคลาส ViewModel ของฉันข้อผิดพลาดก็หายไป

ViewModel

class AddProductViewModel (
    private val repository: ProductRepository,
    private val context: Context
): ViewModel(), Observable {

    @Bindable
    val inputProductName = MutableLiveData<String>()


    fun addProduct() {
        //inputProductName.value
    }

    override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }

    override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }
}

ตัวอย่างที่สมบูรณ์สำหรับ MVVM Databinding โดยใช้ Fragments

เค้าโครง - add_product.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <data class=".AddProductBinding">
        <variable
            name="addProductViewModel"
            type="com.rao.iremind.AddProductViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <EditText
            android:id="@+id/editTextTextProductName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Product name"
            android:inputType="textPersonName"
            android:text="@={addProductViewModel.inputProductName}"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />



    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

AddProductFragment

class AddProductFragment: Fragment() {
    private lateinit var binding: AddProductBinding
    private lateinit var addProductViewModel: AddProductViewModel
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding =  DataBindingUtil.inflate(inflater, R.layout.add_product, container, false)
        val dao = SubscriberDatabase.getInstance(requireActivity().applicationContext).productDAO
        val repository = ProductRepository(dao)
        val factory = AddProductViewModelFactory(repository, requireActivity().applicationContext)
        addProductViewModel = ViewModelProvider(this, factory).get(AddProductViewModel::class.java)
        binding.addProductViewModel = addProductViewModel
        binding.lifecycleOwner = this
        val view = binding.root

        return view
    }
}

AddProductViewModel

class AddProductViewModel (
    private val repository: ProductRepository,
    private val context: Context
): ViewModel(), Observable {

    @Bindable
    val inputProductName = MutableLiveData<String>()


    fun addProduct() {
        //inputProductName.value
    }

    override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }

    override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }
}

หวังว่านี่จะช่วย R


1

ในกรณีของฉัน:ปัญหาได้รับการแก้ไข

ขั้นตอน:

  1. นำตัวแปร Viewmodel - ใน XML
<variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. ลบออกทั้งหมด Viewmodel อ้างอิงผูกพัน - ใน XML
android:text="@{viewModel.simName}"
  1. การอ้างอิงอินสแตนซ์ viewModel ที่ลบออกไปยังการแมปการเชื่อมโยง - ในกิจกรรม
binding.viewModel = viewModel
  1. ทำความสะอาดโครงการและคอมไพล์ใหม่

  2. เพิ่มตัวแปร Viewmodel - ใน XML และสร้างโครงการ

< variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. เพิ่มการอ้างอิงอินสแตนซ์ viewModel ไปยังการแมปที่มีผลผูกพัน - ในโปรเจ็กต์ Activity & Build
binding.viewModel = viewModel
  1. เพิ่มการอ้างอิงการโยง viewModel ทั้งหมด - ในโครงการ XML & Build .
    android:text="@{viewModel.simName}"
  1. ตอนนี้จะใช้งานได้แล้ว

- ฉันหวังว่ามันจะได้ผลสำหรับคุณเช่นกัน


1

ฉันมีปัญหาเดียวกันกับห้องพักและฉันไม่ได้ใช้viewBinding
ฉันแก้ไขด้วยการใช้exportSchemaเป็นเท็จในคลาสฐานข้อมูลของฉัน

@Database(entities = [ModelClass::class], version = 1, exportSchema = false)
abstract class ModelDatabase: RoomDatabase() {}

ข้อควรจำ: exportScehma อาจแตกต่างกันไปตามกรณีการใช้งานของคุณโดยทั่วไปแล้วจะยังคงเป็นเท็จดังนั้นฉันจึงใส่เป็นเท็จ


1

ในกรณีของฉันฉันได้เปลี่ยน UserManager ตัวแปรเดียวทั่วโลกเป็น NetWorkManager และทุกที่ที่มีคลาส UserManager พวกเขาเปลี่ยนเป็น NetworkManager

เนื่องจากฉันใช้ Hilt ฉันจึงต้องสร้างโครงการอีกครั้ง

ฉันทำความสะอาดโครงการและ Kotlin แสดงให้เห็นว่าข้อผิดพลาดอยู่ที่ไหน


1

ฉันก็พบกับปัญหาเดียวกันดังนั้นเพียงแค่ลองลบโฟลเดอร์ .idea ของโปรเจ็กต์และโฟลเดอร์. gradle จากนั้นฉันยังลบโฟลเดอร์ build ในโฟลเดอร์แอพจากนั้นรีสตาร์ท android studio IDE และมันก็ใช้ได้สำหรับฉัน


1

สำหรับฉันปัญหาคือการมีคีย์หลัก 2 คีย์ที่กำหนดไว้ในโมเดล

// before    
@field:ColumnInfo(name = "id") @field:PrimaryKey(autoGenerate = true) var id: Long = 0,
@field:ColumnInfo(name = "name") @field:PrimaryKey var name: String,
    
//after
@field:ColumnInfo(name = "id") @field:PrimaryKey(autoGenerate = true) var id: Long = 0,
@field:ColumnInfo(name = "name") @field:NotNull var name: String,

ฉันต้องสร้างโครงการใหม่และเปลี่ยนคลาส Dao เล็กน้อยเพื่อเรียกใช้ข้อความเกี่ยวกับปัญหา



1

วิธีนี้เกิดขึ้นกับฉันทุกอย่างที่มีปัญหากับRoomฐานข้อมูลและCoroutinesแม้กระทั่งการสะกดผิด สุดท้ายคือเมื่อพยายามส่งคืนค่าเดียวด้วยโฟลว์หลังจากแทรกคอลัมน์โดย: Flow<Long>จากคลาส DAOs

ควรเป็นsuspendฟังก์ชันและLongพิมพ์เฉพาะเพื่อส่งคืนหลังจากแทรกคอลัมน์

ปัญหาเหล่านี้มีความคลุมเครือในบางครั้งดังนั้นลองอ่านข้อความ Build Output ทั้งหมดข้อความที่ช่วยฉันได้คือ: error: Not sure how to handle insert method's return type.


1

ไม่มีอะไรได้ผลฉันลองทุกอย่างและในที่สุดก็พบข้อผิดพลาดเล็ก ๆ น้อย ๆ ซึ่งกำลังสร้างปัญหาใหญ่

กลับไปที่ไฟล์ที่สร้างขึ้นใหม่สำหรับฐานข้อมูลและตรวจสอบโค้ดทีละบรรทัดของแต่ละไฟล์อย่างระมัดระวัง

ตรวจสอบคลาสฐานข้อมูลและตรวจสอบว่า Dao ถูกประกาศตามตัวอย่างหรือไม่

abstract val commentDatabaseDao: CommentDatabaseDao

ประกาศว่าเป็นvalไม่ใช่varนี่เป็นกรณีของฉันและในที่สุดก็แก้ไขได้


1

ฉันเพิ่งเกิดเหตุการณ์นี้ขึ้นกับฉัน นักพัฒนาคนอื่นไม่ได้ทำการผสานอย่างถูกต้องดังนั้นบรรทัดนี้จึงอยู่ในโค้ด

<<<<<<< HEAD

แทนที่จะได้รับข้อผิดพลาดในการคอมไพล์ฉันได้รับข้อผิดพลาด KaptExecution


1

หลังจากเจ็บปวดมากฉันตัดสินใจที่จะลองannotationProcessorแทนที่จะkaptหวังว่าอย่างน้อยมันอาจจะแสดงข้อความแสดงข้อผิดพลาดหรืออะไรก็ตามที่สามารถช่วยฉันค้นหาแหล่งที่มาได้ แต่โชคดี (หรือน่าเสียดายเพราะเวลาที่เสียไป) สร้างได้สำเร็จโดยไม่มีข้อผิดพลาดใด ๆ ส่วนใหญ่เป็นบั๊กในkaptตัวเอง ลองใช้วิธีนี้และอาจช่วยได้


1

แท้จริงแล้วปัญหาอยู่ที่การพิมพ์ในรหัสของคุณ สำหรับฉันฉันต้องหยุดใช้ปลั๊กอิน kapt จากนั้นฉันก็เปลี่ยนไปใช้ annotationProcessor มีการระบุอย่างชัดเจนว่าความผิดพลาดหลังสร้างคืออะไร

จากนั้นคุณสามารถเปลี่ยนกลับไปใช้ kapt ได้หลังจากแก้ไขข้อผิดพลาดแล้ว

สำหรับฉันข้อผิดพลาดที่ฉันมีคือฉันพยายามเชื่อมโยงข้อมูลสองทางในมุมมองข้อความโดยไม่ได้ตั้งใจ


1

ผมมีปัญหาเหมือนกัน. ในกรณีของฉันปัญหาเกี่ยวกับฐานข้อมูล ฉันต้องเปลี่ยนบรรทัดของรหัสนี้ @Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)

ฉันเพิ่มตารางอื่นในฐานข้อมูล แต่ลืมเพิ่มตารางในบรรทัดด้านบน


1

ฉันมีข้อผิดพลาดเดียวกัน ฉันมีสองประเด็น

  1. คุณอาจต้องเพิ่ม

    การใช้งาน 'androidx.room:room-ktx:2.2.5'

  2. ฉันได้ลบไฟล์ที่อ้างถึงในฐานะสมาชิกในไฟล์ activity_xml ไฟล์หนึ่ง ข้อผิดพลาดไม่เคยให้เบาะแสใด ๆ แก่ฉันจนกว่าฉันจะเปลี่ยนเป็น annotationProcessor แทน kapt จากนั้นก็ชี้ให้เห็นข้อผิดพลาดฉันพบไฟล์และแน่นอนว่าฉันมีการอ้างอิงถึงไฟล์ที่ฉันไม่ได้ใช้อีกต่อไปและถูกลบ ฉันลบการอ้างอิงข้อมูลนี้ออกจาก xml และล้างข้อมูลทั้งหมด จากนั้นฉันใส่มันกลับไปที่ kapt




0

ฉันเพิ่งอัปเดต Android Studio IDE เป็นเวอร์ชัน 4.1.1 และพบปัญหาที่คล้ายกัน

สิ่งที่ฉันรู้คือ ...

…ก่อนหน้านี้ฉันไม่มี*_Implชั้นเรียน (ฉันรู้เกี่ยวกับพวกเขาในเรื่องของ Kotlin) และไม่ได้*Testsเรียนใหม่

ดังนั้นหลังจากที่“ทำงานทุกโลก” ที่จะใช้วิธีการแก้ปัญหาที่ผมเพิ่งทำทางเลือกที่ใช้งานง่ายและเป็นธรรม: ฉันลบไฟล์ทั้งหมดที่อยู่ภายในของฉัน "มือสร้าง" แพคเกจที่ไม่ได้มีก่อนการปรับปรุง

และเดาอะไร?

มันได้ผล ไม่มีปัญหาไม่มีปัญหาแม้แต่เรื่องkaptเดียว

ฉันไม่ได้บอกว่ามันเป็นทางออกสุดท้าย แต่มันสามารถทำงานสำหรับคุณ

ขอให้มีความสุข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.