Org.jetbrains.kotlin.gradle.internal.KaptExecution निष्पादित करते समय एक विफलता हुई


130

अचानक मुझे यह त्रुटि मिलनी शुरू हो गई है, और मुझे इस बात का अंदाजा नहीं हो रहा है कि अगर कोई मुझे सिर्फ यह बताए कि यह त्रुटि कहां है, तो यह काफी मददगार होगा। एंड्रॉइड स्टूडियो के नए अपडेट की वजह से मैं इसे प्राप्त करने में सक्षम हूं। त्रुटि का विस्तृत सारांश मुझे मिल रहा है।

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फ़ाइल में दिखाएं ।
सर्गेई

कृपया DataBinderMapperImpl.java कोड भी दिखाएं।
सेर्गेई

3
क्या आपने एंड्रॉइड स्टूडियो 4 में अपडेट किया है? यहाँ एक ही पीबी
सैमुअल एमिनेट

2
मैंने एंड्रॉइड स्टूडियो 4 को अपडेट किया और मुझे रूम का उपयोग करने के साथ एक ही त्रुटि हो रही है, मैं अपने प्रश्नों में से एक को बदलकर अस्थायी रूप से ठीक करने में सक्षम था। मेरे पास शुरू में यह क्वेरी थी: "SavedCases से केस केस_नाम", और फिर इसे "सेवेड से सेलेक्ट *" में बदल दिया, और त्रुटि संदेश चला गया। किसी कारण के लिए, मुझे केवल यह त्रुटि मिलती है जब मैं केवल विशिष्ट कॉलम को क्वेरी करने का प्रयास करता हूं। यह समस्या के लिए एक आदर्श समाधान नहीं है और मुझे आशा है कि किसी के पास एक बेहतर समाधान है।
हानी

मेरे पास एक समान त्रुटि थी और एक समाधान मिला जो मेरे लिए काम करता है। आपने भी कुछ ऐसा ही किया होगा। stackoverflow.com/questions/63133657/…
१ode:३५ पर मुस्तकोड

जवाबों:


198

एंड्रॉइड स्टूडियो का UI सिर्फ त्रुटि छुपा रहा था ...

जब त्रुटि हुई, तो उसने सूची दृश्य में आइटम को हाइलाइट किया, और टर्मिनल दृश्य में एक अनहेल्दी संदेश दिखाया। बहुत बुरा

वास्तविक त्रुटि को खोजने के लिए, सूची दृश्य में रूट आइटम का चयन करें ताकि एंड्रॉइड स्टूडियो टर्मिनल व्यू में पूरे निर्माण आउटपुट को प्रदर्शित करे, फिर त्रुटि खोजने के लिए स्क्रॉल करें। अच्छा अच्छा


6
यदि आपके पास एक संकलन-समय कक्ष (DB) त्रुटि है, तो वह इसे इस तरह दिखाएगा - इसका अर्थ है कि आपका एक या कुछ प्रश्न गलत हैं
Idan Damri

मुझे लगता है कि यह किसी भी संकलित समय DB त्रुटि के लिए इस तरह दिखाएगा ... मेरे मामले में, यह एक संकलित समय Realm DB त्रुटि एक गलत तरीके से स्थापित इकाई वस्तु के बारे में था ...
Eric

1
अपवोट्स को देखते हुए, यहाँ UI निर्णय अच्छा नहीं है
डैनियल विल्सन

1
इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए
माइक 6679

56

शायद मुझे उत्तर के लिए थोड़ा देर हो गई लेकिन, वैसे भी, मुझे वही त्रुटि मिल रही थी। बिल्ड विफलता कुछ त्रुटि के कारण हो सकती है जो एंड्रॉइड स्टूडियो प्रोजेक्ट आकार बहुत बड़े होने के कारण संभवतः इंगित करने में विफल रहता है।

यहां सटीक त्रुटि इंगित करने का आसान तरीका है।

  1. एंड्रॉइड स्टूडियो में विश्लेषण मेनू पर जाएं और निरीक्षण कोड पर क्लिक करें ; पूरे प्रोजेक्ट की जाँच करें, ठीक पर क्लिक करें और निरीक्षण समाप्त होने तक प्रतीक्षा करें।

    कोड का निरीक्षण करें

  2. अब आपको एक टैब दिखाई देगा जो सभी त्रुटियों, चेतावनियों आदि को इंगित करेगा और अब आप वास्तविक मुद्दे को हल कर सकते हैं।

    त्रुटियाँ टैब


2
हाँ, यह बिल्कुल त्रुटि दिखा रहा है। (मैंने एक्सएमएल में कुछ गलती की)
हरि शंकर एस

2
मुझे समझ नहीं आता कि जब निर्माण विफल होता है तो एंड्रॉइड स्टूडियो सीधे त्रुटि क्यों नहीं दिखाता है, इसका कोई मतलब नहीं है। इसके लिए धन्यवाद, मेरी बहुत मदद की
मोयो

34

अंतर्निहित समस्या क्या है, यह पता लगाने का तरीका निम्नलिखित कमांड चलाना है:

./gradlew assembleDebug --stacktrace

17

मुझे एक ही मुद्दा मिला, इसलिए मैंने अधिक जानकारी प्राप्त करने की कोशिश की

gradle-> app-> Tasks-> बनाएँ-> इकट्ठा

इसके बाद मुझे यह कहते हुए सटीक त्रुटि हुई कि "एनोटेशन प्रसंस्करण के दौरान त्रुटि"। मैंने अपने हाल ही में बनाए गए 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

3
gradle->app->Tasks->Build->assembleवो क्या है?
user25

@ user25 ग्रेडल टूल विंडो
अजय गुरुपन्नवर

14

मुझे थोड़ी देर के लिए एक ही त्रुटि थी फिर मैंने अन्य पैकेजों की जांच शुरू कर दी मुझे पता चला कि मैंने अपने डेटाबेस कोड में एक टाइपो गलती की है। तो, "अपने डेटाबेस और अन्य गतिविधि वर्ग फ़ाइलों के माध्यम से जाओ u वहाँ कुछ गलतियाँ मिल सकती हैं।"


4
किस तरह की गलतियां?
मुस्ताकॉड

मेरे मामले में, मैं @DaoMyDao इंटरफ़ेस में जोड़ना भूल गया
ईशान कुमार

13

परिवर्तन

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"

अद्भुत, यह मदद की है
user25

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`

20
यह उचित समाधान नहीं है
शुभम तत्र

2
@ShubhamTater यह समाधान है जब तक gradle4.0.0 को ठीक नहीं किया जाना है। यह अस्थायी समाधान है। एक बार gradle4.0.0 तय हो गया है। हम ४.० या उससे अधिक के ग्रेडिएंट को अपडेट कर सकते हैं
मुजीब रहमान टी

4
मैंने इस अपवाद को 4.0.1
срослав Нестеров

8

मेरे लिए, संदर्भ त्रुटियों का एक समूह और XML त्रुटियों में एक त्रुटि DataBindingइस त्रुटि के साथ उत्पन्न हुई।

मैंने <variable/>एक layoutफ़ाइल में हटा दिया है , क्योंकि मुझे लगा, मुझे इसकी कोई आवश्यकता नहीं है। मैं भूल गया कि मेरे पास layoutफ़ाइल में संदर्भित चर था ।

परियोजना के निर्माण के बाद, यह एक त्रुटि उत्पन्न करता है, जहां BindingImplवर्ग को आयात करना संभव नहीं था , क्योंकि यह मौजूद नहीं है और यह त्रुटि केवल उपरोक्त KaptExecutionत्रुटि के समानांतर चेतावनी के रूप में दिखाई गई थी ।

थोड़ी देर खोजने के बाद, मुझे यह त्रुटि मिली और इसे हल कर दिया। फिर, संदर्भ त्रुटियों का एक गुच्छा, जहां दिखाया गया है, क्योंकि मैंने कुछ का नाम बदला और इसे Fragmentफाइलों में नहीं बदला । इन त्रुटियों को हल करने के बाद, बिल्ड मेरे लिए त्रुटियों या चेतावनियों के बिना समाप्त हो गया।


1
यह त्रुटि हमेशा XML फ़ाइल से संबंधित होती है जो हमारे डेटाबाइंडिंग का उपयोग कर रही है।
शुभम तत्र

4

मुझे भी यही समस्या थी। मैं आपको उदाहरण के माध्यम से चलता हूं कि मैंने समस्या को कैसे समाप्त किया और जिस तरह से मैंने इसे हल किया, शायद आप एक बड़ी तस्वीर प्राप्त कर सकते हैं।

हल करने से पहले

@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
)

डीएओ में

@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()

मैंने POJO मॉड्यूल से पृथक किए गए क्षेत्र को हटा दिया और इसे सत्र तालिका में जोड़ दिया

बदलाव के बाद

@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 फ़ाइल को ठीक करता हूं तो सब कुछ पूरी तरह से काम करता है।
शुभम तत्र

2
हाँ कृपया। आपने गहरी खुदाई कैसे की?
सिमो न्याथी

2
@LeardoardoSibela के लिए क्षमा करें, मेरे कहने का मतलब यह है कि निर्माण के दौरान --stacktrace विकल्प जोड़ रहा हूं ताकि मुझे त्रुटि के बारे में अधिक जानकारी मिल सके।
अली

आप फ़ाइल-> सेटिंग्स-> सेटिंग-> बिल्ड, निष्पादन, परिनियोजन-> कंपाइलर-> कमांडर विकल्प जोड़ सकते हैं - कमांड-लाइन विकल्प मेरे मामले में Btw मुझे एक निर्भरता याद आ रही थी: कार्यान्वयन "androidx.room:room.ktx:> Room_version "
एम्बर

4

मेरे मामले में, मैंने कमरे का उपयोग किया और मेरे डेटाबेस में से एक में अप्रयुक्त पैरामीटर है और दुर्भाग्य से एंड्रॉइड स्टूडियो मुझे सही ढंग से चेतावनी नहीं देता है


मेरे मामले में मैं अपनी एक कक्षा को @PrimaryKey देना भूल गया हूं
varotariya vajsi


4

मुझे भी यही समस्या थी। मेरे मामले में समस्या डेटाबेस के बारे में थी। मुझे कोड की इस लाइन को बदलना था @Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)

मैंने डेटाबेस में एक और तालिका जोड़ी, लेकिन ऊपर की पंक्ति में तालिका जोड़ना भूल गया।


2

बहुत दर्द के बाद, मैंने यह उम्मीद करने के annotationProcessorबजाय कोशिश की kaptकि यह कम से कम एक त्रुटि संदेश या कुछ भी दिखा सकता है जो मुझे स्रोत का पता लगाने में मदद कर सकता है। लेकिन सौभाग्य से (या दुर्भाग्य से; व्यर्थ समय के कारण), यह बिना किसी त्रुटि के सफलतापूर्वक बनाया गया था। यह ज्यादातर kaptअपने आप में एक बग है। तो, इस समाधान का प्रयास करें और यह मदद कर सकता है।


इसके लिए thx। मैंने इसे 'एनोटेशनप्रोसेसर' का उपयोग करने के लिए स्विच किया और इसे सफलतापूर्वक बनाया। फिर मैंने इसे 'कप्ट' में बदल दिया और यह फिर से निर्माण करने में सक्षम था।
मार्क लापसा

2

यह समस्या तब भी होती है यदि आपने नया कोटलिन प्लगइन स्थापित किया है ( 1.4.20-release-Studio4.1-1और डैगर है kapt 'com.google.dagger:dagger-compiler:2.30')। इस तरह के मामले में एक समाधान plugin: 'kotlin-android-extensions'दृश्य बंधन के साथ पदावनत हो सकता है ( https://developer.android.com/topic/lbooks/view-binding )


1

Shout Out to @Rene Spies 'का उत्तर ऊपर दिया गया है, मुझे भी यह त्रुटि डेटबाइंडिंग के साथ काम करते समय मिली। यह बताता है कि जब आप कोटलिन में @Bindableप्राथमिक निर्माणकर्ता के क्षेत्र में एनोटेशन डालते हैं तो बिल्ड इंजन इसे पसंद नहीं करता है data class

इसलिए कभी भी निम्न कार्य न करें,

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 फ़ाइल को ठीक करता हूं तो सब कुछ पूरी तरह से काम करता है।
शुभम तत्र

1

दिलचस्प है, मुझे यह त्रुटि मिल रही थी क्योंकि मैंने रेट्रोफिट का विवरण जोड़ा था। सावधान रहें कि कमरे और रेट्रोफिट के विवरण को भ्रमित न करें।


1

मेरे मामले में ऐसा इसलिए था क्योंकि मैं अपने 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")
    }
}

Fragments का उपयोग करके MVVM Databinding के लिए पूरा उदाहरण

लेआउट - 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")
    }
}

आशा है कि यह आर मदद करता है


1

मेरे मामले में: समस्या हल हो गई

कदम:

  1. ViewModel चर निकालें - XML में
<variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. सभी दृश्य हटाए गए बाइंडिंग संदर्भ - एक्सएमएल में
android:text="@{viewModel.simName}"
  1. बाइंडिंग मैपिंग में हटाया गया दृश्यमॉडल उदाहरण संदर्भ - गतिविधि में
binding.viewModel = viewModel
  1. स्वच्छ परियोजना और recompile।

  2. ViewModel वैरिएबल जोड़ें - XML ​​और बिल्ड प्रोजेक्ट में

< variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. बाइंडिंग मैपिंग में ViewModel उदाहरण संदर्भ जोड़ें - गतिविधि और बिल्ड प्रोजेक्ट में
binding.viewModel = viewModel
  1. सभी दृश्यमॉडल बाइंडिंग संदर्भ जोड़ें - XML और बिल्ड प्रोजेक्ट में।
    android:text="@{viewModel.simName}"
  1. यह अब काम करेगा।

- मुझे उम्मीद है कि यह आपके लिए भी काम करेगा।


1

मुझे रूम की समान समस्या थी और मैं व्यूबाइंडिंग का उपयोग नहीं कर रहा था ।
मैंने इसे अपने डेटाबेस वर्ग में गलत करने के लिए ExportSchema का उपयोग करके ठीक किया।

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

याद रखें: ExportScehma आपके उपयोग के मामले के अनुसार अलग-अलग हो सकता है, आम तौर पर यह गलत रहता है, इसलिए मैं इसे झूठ बोलता हूं।


1

मेरे मामले में मैंने विश्व स्तर पर एक परिवर्तनशील UserManager को NetWorkManager में बदल दिया है और हर जगह जहाँ UserManager वर्ग थे, वे NetworkManager बन गए।

क्योंकि मैं Hilt का उपयोग कर रहा हूं, मुझे फिर से परियोजना का निर्माण करना पड़ा।

मैंने प्रोजेक्ट को साफ किया और कोटलिन ने दिखाया कि त्रुटियां कहां थीं।


1

मैं भी उसी समस्या का सामना कर रहा था, इसलिए मैंने इसे प्रोजेक्ट के .idea फ़ोल्डर और .gradle फ़ोल्डर को हटाने की कोशिश की, फिर मैंने ऐप फ़ोल्डर के अंदर बिल्ड फ़ोल्डर को भी हटा दिया और फिर एंड्रॉइड स्टूडियो आईडीई को पुनरारंभ करें और यह मेरे लिए काम करता है।


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,

मुझे इस परियोजना के पुनर्निर्माण और समस्या के बारे में संदेश को ट्रिगर करने के लिए दाओ वर्ग को थोड़ा बदलना पड़ा।


1

यह विधि मेरे लिए सब कुछ होती है Roomडेटाबेस के साथ एक समस्या है और Coroutines, यहां तक ​​कि गलतियों की वर्तनी भी। अंत में, जब Flow<Long>डीएओ कक्षाओं से : सम्मिलित कॉलम के बाद एक फ्लो के साथ एक मान वापस करने की कोशिश कर रहा था ।

यह एक suspendफ़ंक्शन होना चाहिए और Longसम्मिलित कॉलम के बाद वापस जाने के लिए केवल टाइप करना चाहिए ।

ये समस्याएं कभी-कभी अस्पष्ट होती हैं, इसलिए सभी बिल्ड आउटपुट संदेशों को पढ़ने का प्रयास करें, जो संदेश मेरी मदद करता है: error: Not sure how to handle insert method's return type.


1

कुछ भी काम नहीं किया मैंने सब कुछ करने की कोशिश की और अंत में एक छोटी सी गलती पाई गई जो एक बड़ी समस्या पैदा कर रही थी।

डेटाबेस के लिए प्रत्येक नई बनाई गई फ़ाइल पर वापस जाएं और प्रत्येक फ़ाइल की लाइन को ध्यान से कोड लाइन के लिए जांचें।

डेटाबेस कक्षा की जाँच करें और जाँच करें कि क्या उदाहरण के लिए डीओ घोषित किया गया है,

abstract val commentDatabaseDao: CommentDatabaseDao

के रूप में घोषित वैल नहीं वर , इस मेरे मामले में था और अंत में यह संकल्प लिया है।


1

मेरे साथ बस यही हुआ था। एक अन्य देव ने ठीक से एक मर्ज पूरा नहीं किया था इसलिए यह रेखा कोड में थी

<<<<<<< HEAD

संकलन त्रुटि मिलने के बजाय मुझे KaptExecution त्रुटि मिली।


1

मेरी भी यही त्रुटि थी। मेरे पास दो मुद्दे थे।

  1. आपको जोड़ने की आवश्यकता हो सकती है

    कार्यान्वयन 'androidx.room:room-ktx:2.2.5'

  2. मैंने गतिविधि_xml फ़ाइलों में से एक में एक सदस्य के रूप में संदर्भित एक फ़ाइल को हटा दिया था। त्रुटि ने मुझे कभी कोई सुराग नहीं दिया जब तक कि मैंने इसे kapt के बजाय annotationProcessor में नहीं बदल दिया, तब इसने त्रुटि को इंगित किया, मुझे फ़ाइल मिली, और निश्चित रूप से मेरे पास एक फ़ाइल का संदर्भ था जिसे मैंने अब उपयोग नहीं किया था और हटा दिया गया था। मैंने xml से इस डेटा संदर्भ को हटा दिया और इसने इसे पूरा कर दिया। फिर मैंने उसे वापस कपट में डाल दिया।




0

मैंने सिर्फ 4.1.1 संस्करण में एंड्रॉइड स्टूडियो आईडीई को अपडेट किया और एक समान मुद्दा मिला।

मुझे एहसास हुआ कि क्या था ...

... इससे पहले कि मेरे पास कुछ *_Implकक्षाएं नहीं थीं (मुझे कोटलिन सामान में उनके बारे में पता है) और कुछ नई *Testsकक्षाएं भी नहीं थीं ।

इसलिए, समाधान निकालने के लिए "सारी दुनिया को चलाने" के बाद, मैंने बस एक सहज और निष्पक्ष विकल्प बनाया: मैंने अपने "हैंड बिल्ड" पैकेजों के अंदर उन सभी फ़ाइलों को हटा दिया जो एंड्रॉइड स्टूडियो अपडेट से पहले नहीं थीं

और अंदाज लगाइये क्या?

इसने काम कर दिया। कोई समस्या नहीं, एक समस्या के बारे में भी नहीं kapt

मैं यह नहीं कह रहा हूं कि यह अंतिम समाधान है। लेकिन यह आपके काम आ सकता है।

एक अच्छा लें।


0

हाँ, मुझे भी यह त्रुटि मिली और यह भी एक Roomसंबंधित मुद्दा था।

मैं अपने परिभाषित किया था TypeConverters, लेकिन कभी नहीं मेरी एनोटेट Room databaseसाथ: @TypeConverters(TypeConverter.class)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.