Org.jetbrains.kotlin.gradle.intern.KaptExecution কার্যকর করার সময় একটি ব্যর্থতা দেখা দিয়েছে


97

হঠাৎ করেই আমি এই ত্রুটিটি পেতে শুরু করি এবং আমি কেন এই ধারণাটি পাচ্ছি না যে যদি কেউ আমাকে কেবল এই ত্রুটিটি কোথায় থাকে তবে কেন এটি যথেষ্ট সহায়ক হবে তা আমাকে জানায়। অ্যান্ড্রয়েড স্টুডিওর নতুন আপডেটের কারণে আমি যতটা পেতে সক্ষম তা হ'ল। ত্রুটির বিশদ সংক্ষিপ্তসার আমি পাচ্ছি।

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ফাইলটিতে দেখান।
সের্গে

দয়া করে ডেটাবাইন্ডারম্যাপারআইপল.জভা কোডটিও দেখান।
সের্গেই

4
আপনি কি অ্যান্ড্রয়েড স্টুডিও 4 এ আপডেট হয়েছেন? এখানে একই পিবি
স্যামুয়েল এমিনেট

4
আমি অ্যান্ড্রয়েড স্টুডিও 4 এ আপডেট করেছি এবং রুম ব্যবহার করার সাথে আমি একই ত্রুটি পেয়েছি, আমি আমার প্রশ্নের যে কোনও একটি পরিবর্তন করে সাময়িকভাবে এটি ঠিক করতে সক্ষম হয়েছি। আমার প্রাথমিকভাবে এই জিজ্ঞাসাটি ছিল: "SELECT কেস-এর নাম সেভডকেসগুলি থেকে" এবং তারপরে এটিকে "সেভড কেসস থেকে সেভড কেসস" রূপান্তরিত করে ত্রুটি বার্তাটি চলে যায়। কিছু কারণে, আমি কেবল তখনই এই ত্রুটিটি পাই যখন আমি কেবলমাত্র নির্দিষ্ট কলামগুলিকেই জিজ্ঞাসা করার চেষ্টা করি। সমস্যাটির জন্য এটি আদর্শিক সমাধান নয় এবং আমি আশা করি কারওর থেকে আরও ভাল সমাধান হয়েছে has
হানি

আমারও অনুরূপ ত্রুটি হয়েছিল এবং একটি সমাধান খুঁজে পেয়েছি যা আমার পক্ষে কাজ করে। আপনিও তেমন কিছু করেছেন। stackoverflow.com/questions/63133657/...
Mustaqode

উত্তর:


134

অ্যান্ড্রয়েড স্টুডিওর ইউআই কেবল ত্রুটিটি লুকিয়েছিল ...

ত্রুটি দেখা দিলে এটি তালিকার ভিউটিতে আইটেমটি হাইলাইট করে এবং টার্মিনাল দৃশ্যে একটি অপ্রয়োজনীয় বার্তা প্রদর্শন করে। bad bad

আসল ত্রুটিটি খুঁজে পেতে, তালিকা ভিউতে মূল আইটেমটি নির্বাচন করুন যাতে অ্যান্ড্রয়েড স্টুডিও টার্মিনাল ভিউতে পুরো বিল্ড আউটপুট প্রদর্শিত করতে পারে, তারপরে ত্রুটি সন্ধান করতে স্ক্রোল করে। good good


4
আপনার যদি একটি সংকলন-সময় কক্ষ (ডিবি) ত্রুটি থাকে তবে এটি এটিকে এটি দেখায় - এর অর্থ হল আপনার এক বা আপনার কিছু প্রশ্নের ভুল
ইদন দাম্রি

51

উত্তরের জন্য হয়তো আমি কিছুটা দেরি করেছি তবে যাইহোক, আমি একই ত্রুটি পাচ্ছিলাম। বিল্ড ব্যর্থতা কিছু ত্রুটির কারণে ঘটতে পারে যা অ্যান্ড্রয়েড স্টুডিওগুলি সম্ভবত প্রকল্পের আকার খুব বড় হওয়ার কারণে চিহ্নিত করতে ব্যর্থ হয়েছিল।

সঠিক ত্রুটিটি চিহ্নিত করার সহজ উপায় এখানে।

  1. অ্যান্ড্রয়েড স্টুডিওতে বিশ্লেষণ মেনুতে যান এবং পরিদর্শন কোডে ক্লিক করুন ; পুরো প্রকল্পটি দেখুন, ঠিক আছে ক্লিক করুন এবং পরিদর্শন শেষ হওয়ার জন্য অপেক্ষা করুন।

    Inspect Code

  2. এখন আপনি একটি ট্যাব দেখতে পাবেন যা সমস্ত ত্রুটি, সতর্কতা ইত্যাদি নির্দেশ করবে এবং আপনি এখন আসল সমস্যাটি সমাধান করতে পারবেন।

    Errors tab


4
হ্যাঁ, এটি ঠিক ত্রুটি দেখাচ্ছে error (আমি এক্সএমএলে কিছু ভুল করেছি)
হরি শঙ্কর এস

4
আমি বুঝতে পারছি না যে কোনও বিল্ড ব্যর্থ হলে অ্যান্ড্রয়েড স্টুডিও কেন সরাসরি ত্রুটিটি প্রদর্শন করে না, তা কোনও অর্থহীন নয়। এর জন্য ধন্যবাদ, আমাকে অনেক সাহায্য করেছে
মোয়ো

29

অন্তর্নিহিত সমস্যাটি কী তা জানার উপায়, নিম্নলিখিত আদেশটি চালানো:

./gradlew assembleDebug --stacktrace

14

আমি কিছুক্ষণের জন্য একই ত্রুটি পেয়েছিলাম তখন আমি অন্যান্য প্যাকেজগুলি পরীক্ষা করতে শুরু করি আমি জানতে পেরেছিলাম যে আমি আমার ডাটাবেস কোডটিতে টাইপ ভুল করেছি। সুতরাং, "আপনার ডাটাবেস এবং অন্যান্য ক্রিয়াকলাপ শ্রেণীর ফাইলগুলি দেখুন আপনি সেখানে কিছু ভুল খুঁজে পেতে পারেন" "


4
কি ধরনের ভুল?
মোস্তাকোড

আমার জন্য নেভিগেশন গ্রাফটিতে একটি ত্রুটি ছিল
জর্জি ক্যাসেরিগো

আমার ক্ষেত্রে, আমি @Daoমাইডাও ইন্টারফেসে যুক্ত করতে ভুলে গেছি
ইশান কুমার

14

আমি একই সমস্যা পেয়েছি তাই আমি আরও তথ্য পাওয়ার চেষ্টা করেছিলাম

গ্রেড-> অ্যাপ্লিকেশন-> টাস্ক-> বিল্ড-> একত্র করুন

এর পরে "টীকায়িত প্রক্রিয়া চলাকালীন ত্রুটি" বলে সঠিক ত্রুটি পেয়েছি। আমি আমার সাম্প্রতিক টুইটকৃত ডিএও ক্লাসটি পরীক্ষা করে দেখেছি যে কোনও একটি পদ্ধতির রিটার্ন টাইপ সংজ্ঞায়িত হয়নি।

//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

@ ব্যবহারকারী 25 গ্রেডল সরঞ্জাম উইন্ডো
অজয় গুড়াপণাবার

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

আপনি যদি ক্লাসপথে আপগ্রেড করেছেন 'com.android.tools.build:gradle:4.0.0' এটি পূর্ববর্তী সংস্করণটি প্রতিস্থাপন করুন

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

এবং গ্রেড- wrapper.properties পরিবর্তন করুন

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

16
এটি যথাযথ সমাধান নয়
শুভম টেটার

4
@ শুভামটিটার গ্রেডলে ৪.০.০ ঠিক না হওয়া পর্যন্ত এটি সমাধান। এটিই অস্থায়ী সমাধান। গ্রেডলে ৪.০.০ ঠিক হয়ে গেলে। আমরা 4.0 বা আরও গ্রেডটি আপডেট করতে পারি
মুজিব

4
আমি 4.0.1 এই ব্যতিক্রম ধরা
Ярослав Нестеров

8

আমার জন্য, এক্সএমএল এক্সপ্রেশনগুলির সাথে একগুচ্ছ রেফারেন্স ত্রুটি এবং ত্রুটি DataBinding এই ত্রুটিটি উত্পন্ন করেছে।

আমি একটি <variable/>এ মুছে ফেলেছিlayout ফাইলের , কারণ আমি ভেবেছিলাম, আমার আর এটির দরকার নেই। আমি ভুলে গিয়েছিলাম যে আমার মধ্যে পরিবর্তনশীল রেফারেন্স ছিলlayout ফাইলটিতে ।

প্রকল্পটি তৈরির পরে, এটি একটি ত্রুটি তৈরি করেছিল, যেখানে BindingImplশ্রেণিটি আমদানি করা সম্ভব ছিল না কারণ এটি বিদ্যমান নেই এবং এই ত্রুটিটি কেবল উপরের সমান্তরালে একটি সতর্কতা হিসাবে দেখানো হয়েছিলKaptExecution ত্রুটির ।

কিছুক্ষণ অনুসন্ধান করার পরে, আমি এই ত্রুটিটি খুঁজে পেয়েছি এবং এটি সমাধান করেছি। তারপরে, যেখানে রেফারেন্স ত্রুটিগুলির একটি গুচ্ছ দেখানো হয়েছে, কারণ আমি কোনও কিছুর নাম পরিবর্তন করেছি এবং এটি Fragmentফাইলগুলিতে এর নাম পরিবর্তন করে নি । এই ত্রুটিগুলিও সমাধান করার পরে, বিল্ডটি আমার জন্য ত্রুটি বা সতর্কতা ছাড়াই শেষ হয়েছে।


4
ঠিক এই ত্রুটিটি সর্বদা XML ফাইলের সাথে সম্পর্কিত যা আমাদের ডেটাবাইন্ডিং ব্যবহার করছে।
শুভম টেটার


2

আমার ক্ষেত্রে, আমি ঘর ব্যবহার করেছি এবং আমার একটি ডেটাবাসডাও পদ্ধতিতে অব্যবহৃত প্যারামিটার রয়েছে এবং দুর্ভাগ্যক্রমে অ্যান্ড্রয়েড স্টুডিও আমাকে সঠিকভাবে সতর্ক করে না


1

আমারও একই সমস্যা ছিল। আমি কীভাবে সমস্যার মুখোমুখি হয়েছি এবং যেভাবে আমি এর সমাধান করেছি তা সম্ভবত আপনি আরও একটি বড় ছবি পেতে পারেন তার উদাহরণ দিয়ে চলুন Let

সমাধানের আগে

@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

তবে আপনি যদি এখনও স্বাচ্ছন্দ্য বোধ না করেন তবে আপনি আপনার কোড পোস্ট করতে পারেন।

আমি আশা করি এটি সাহায্য করতে পারে


আমি আমার সমস্যার সমাধান পেয়েছি, আমি জানি না এটি আপনার পক্ষে কাজ করবে বা না তবে আত্মা আপনার এক্সএমএল ফাইলটি যা আপনি বাধ্য করছেন তা যাচাই করছে, বাঁধাই একটি সংকলন টাইম সিস্টেম, এবং এটি এক্সএমএল ফাইলের জন্য কাজ করে তাই এটি পরীক্ষা করে দেখুন কিনা এটিতে যে কোনও ত্রুটি এটি এ ধরণের ত্রুটি প্রদর্শন করবে। আমি আমার এক্সএমএল ফাইলটি সংশোধন করি তারপর সমস্ত কিছুই নিখুঁতভাবে কাজ করে।
শুভম টেটার

4
হ্যাঁ. আপনি গভীর খনন কিভাবে?
সিমো ন্যাথি

4
@ লিওনার্দোসিবেলা এর জন্য দুঃখিত, আমি যা বলতে চাইছিলাম তা নির্মাণের সময় - স্ট্যাকট্রেস বিকল্পটি যুক্ত করা হচ্ছে যাতে আমি ত্রুটির বিষয়ে আরও তথ্য পেতে পারি।
আলী

আপনি ফাইল থেকে স্ট্যাকট্রেস বিকল্পটি যোগ করতে পারেন-> সেটিংস-> বিল্ড, এক্সিকিউশন, স্থাপনা-> সংকলক-> কমান্ড-লাইন বিকল্প বিটিডব্লু আমার ক্ষেত্রে আমি একটি নির্ভরতা অনুপস্থিত: বাস্তবায়ন "androidx.room:room-ktx:$ room_version "
অ্যাম্বার

1

উপরের @ রেনে স্পাইসের উত্তরে চিৎকার করুন, ডেটাবাইন্ডিংয়ের সাথে কাজ করার সময় আমি এই ত্রুটিটি পেয়েছি got কোটলিনের @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
        }
}

বোনাস: ক্ষেত্রের মান নির্ধারণের আগে একই মানগুলি পরীক্ষা করে দেখুন যদি আপনি আমার মতো দ্বি-মুখী বাইন্ডিং ব্যবহার করার চেষ্টা করছেন তবে সেটিং এবং পাওয়ার অসীম লুপিং প্রতিরোধ করতে পারেন।


আমি আমার সমস্যার সমাধান পেয়েছি, আমি জানি না এটি আপনার পক্ষে কাজ করবে বা না তবে আত্মা আপনার এক্সএমএল ফাইলটি যা আপনি বাধ্য করছেন তা যাচাই করছে, বাঁধাই একটি সংকলন টাইম সিস্টেম, এবং এটি এক্সএমএল ফাইলের জন্য কাজ করে তাই এটি পরীক্ষা করে দেখুন কিনা এটিতে যে কোনও ত্রুটি এটি এ ধরণের ত্রুটি প্রদর্শন করবে। আমি আমার এক্সএমএল ফাইলটি সংশোধন করি তারপর সমস্ত কিছুই নিখুঁতভাবে কাজ করে।
শুভম টেটার

1

মজার বিষয় হচ্ছে, আমি এই ত্রুটিটি পেয়েছিলাম কারণ আমি রেট্রোফিটের বিবরণ যুক্ত করেছি। রুম এবং রেট্রোফিটের বিবরণটি বিভ্রান্ত না করার বিষয়ে সতর্ক থাকুন।


1

আমার ক্ষেত্রে এটি ছিল কারণ আমি আমার ভিউমোডেলে পর্যবেক্ষণযোগ্য প্রয়োগ করছিলাম না। আমি সীমাবদ্ধ বিন্যাসের সাথে একটি সম্পাদনা পাঠ্য যুক্ত করেছিandroid:text="@={addProductViewModel.inputProductName}"

একবার আমি Observableআমার ভিউমোডেল ক্লাসে প্রয়োগ করলাম ত্রুটিটি চলে গেল

ভিউমোডেল

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")
    }
}

টুকরা ব্যবহার করে এমভিভিএম ডেটাবাইন্ডিংয়ের সম্পূর্ণ উদাহরণ

বিন্যাস - যোগ_প্রোডাক্ট.এক্সএমএল

<?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>

অ্যাডপ্রোডাক্টফ্র্যাগমেন্ট

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
    }
}

অ্যাডপ্রোডাক্টভিউ মডেল

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 পরিবর্তনশীল - এক্সএমএল সালে
<variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. সমস্ত ভিউমোডেল বাইন্ডিং রেফারেন্স সরানো হয়েছে - এক্সএমএলে
android:text="@{viewModel.simName}"
  1. বাইন্ডিং ম্যাপিংয়ের জন্য মুছে ফেলা ভিডমোডাল উদাহরণটি - ক্রিয়াকলাপে
binding.viewModel = viewModel
  1. প্রকল্পটি পরিষ্কার করুন এবং পুনরায় কম্পাইল করুন।

  2. ভিউমোডেল ভেরিয়েবল যুক্ত করুন - এক্সএমএল এবং বিল্ড প্রকল্পে

< variable
    name="viewModel"
    type="com.xx.AppViewModel" / >
  1. বাইন্ডিং ম্যাপিংয়ের সাথে ভিউমোডেল উদাহরণ উল্লেখ যুক্ত করুন - ক্রিয়াকলাপ এবং বিল্ড প্রকল্পে
binding.viewModel = viewModel
  1. সমস্ত ভিউমোডেল বাইন্ডিং রেফারেন্স যুক্ত করুন - এক্সএমএল এবং বিল্ড প্রকল্পে।
    android:text="@{viewModel.simName}"
  1. এটি এখন কাজ করবে।

- আমি আশা করি এটি আপনার পক্ষেও কাজ করবে।


1

আমার রুমেও একই সমস্যা ছিল এবং আমি ভিউবাইন্ডিং ব্যবহার করছিলাম না ।
আমি আমার ডাটাবেস ক্লাসে এক্সপোর্টশ্মিমা মিথ্যা ব্যবহার করে এটি স্থির করেছি ।

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

মনে রাখবেন: এক্সপোর্টসচেমা আপনার ব্যবহারের ক্ষেত্রে অনুসারে আলাদা হতে পারে, সাধারণত এটি মিথ্যা থাকে তাই আমি এটি মিথ্যাতে রেখেছি।


1

আমার ক্ষেত্রে আমি বিশ্বব্যাপী একটি পরিবর্তনশীল ইউজার ম্যানেজার নেটওয়র্কম্যানেজারে এবং ইউজারম্যানেজার শ্রেণি যেখানেই ছিল সেগুলি নেটওয়ার্কম্যানেজার হিসাবে পরিণত হয়েছে।

কারণ আমি হিল্ট ব্যবহার করছি, আমাকে আবার প্রকল্পটি তৈরি করতে হয়েছিল।

আমি প্রকল্পটি পরিষ্কার করেছি এবং কোটলিন দেখিয়েছিল কোথায় ত্রুটি রয়েছে।


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এমনকি বানান ভুলগুলির সাথেও সমস্যা রয়েছে everything সর্বশেষে যখন Flow<Long>sertedোকানো কলাম পরে ফ্লো দিয়ে একটি একক মান ফেরত দেওয়ার চেষ্টা করা হয়েছিল, তখন থেকে : ডিএও ক্লাস থেকে।

এটি একটি suspendফাংশন হওয়া উচিত এবং Longcolumnোকানো কলাম পরে কেবল টাইপ করতে হবে।

এই সমস্যাগুলি কোনও এক সময়ে অস্পষ্ট, তাই সমস্ত বিল্ড আউটপুট বার্তাগুলি পড়ার চেষ্টা করুন, যে বার্তাটি আমাকে সহায়তা করেছিল তা ছিল: error: Not sure how to handle insert method's return type.


1

কিছুই কাজ হয়নি আমি সবকিছু চেষ্টা করে শেষ পর্যন্ত একটি ছোট্ট ভুল খুঁজে পেয়েছি যা একটি বড় সমস্যা তৈরি করছে।

ডাটাবেসের জন্য প্রতিটি নতুন নির্মিত ফাইলটিতে ফিরে যান এবং প্রতিটি ফাইলের লাইন দিয়ে কোড লাইনটি সাবধানতার সাথে পরীক্ষা করে দেখুন।

ডাটাবেস ক্লাসটি পরীক্ষা করে দেখুন এবং উদাহরণস্বরূপ দাও ঘোষিত হয়েছে কিনা তা পরীক্ষা করে দেখুন,

abstract val commentDatabaseDao: CommentDatabaseDao

ভ্যাল না ভের হিসাবে ঘোষণা করুন , এটি আমার ক্ষেত্রে ছিল এবং শেষ পর্যন্ত এই সমাধানের জন্য।


1

আমার শুধু এই ঘটনা ঘটেছিল। অন্য একটি দেব ঠিকভাবে মার্জটি সম্পন্ন করেনি তাই এই লাইনটি কোডে ছিল

<<<<<<< HEAD

একটি সংকলন ত্রুটি পাওয়ার পরিবর্তে আমি কাপ্তএক্সিকিউশন ত্রুটি পেয়েছি।


1

অনেক ব্যথার পরে, আমি আশা করি annotationProcessorপরিবর্তে চেষ্টা করার সিদ্ধান্ত নিয়েছি kaptএটি কমপক্ষে কোনও ত্রুটি বার্তা বা এমন কিছু দেখায় যা আমাকে উত্সটি সনাক্ত করতে সহায়তা করে। তবে ভাগ্যক্রমে (বা দুর্ভাগ্যক্রমে; নষ্ট সময়ের কারণে), এটি কোনও ত্রুটি ছাড়াই সফলভাবে নির্মিত হয়েছিল। এটি বেশিরভাগই kaptনিজের মধ্যে একটি বাগ । সুতরাং, এই সমাধান চেষ্টা করুন এবং এটি সাহায্য করতে পারে।


1

সত্যই, সমস্যাটি আপনার কোডের টাইপোগ্রাফির মধ্যে। আমার হিসাবে, আমাকে ক্যাপ্ট প্লাগইন ব্যবহার বন্ধ করতে হয়েছিল। আমি তারপরে টিকা প্রোটেসর ব্যবহার করতে স্যুইচ করেছি। এটি পরিষ্কারভাবে জানিয়েছিল যে নির্মাণের পরে ত্রুটিটি কী ছিল।

এরপরে ত্রুটিটি সমাধান করার পরে আপনি আবার ক্যাপ্ট ব্যবহার করতে ফিরে যেতে পারেন।

আমার জন্য যে ত্রুটিটি ছিল তা হ'ল আমি ভুল করে একটি পাঠ্য দৃশ্যে দ্বি-মুখী ডেটা বাঁধার চেষ্টা করেছি।


1

আমারও একই সমস্যা ছিল। আমার ক্ষেত্রে সমস্যাটি ছিল ডেটাবেস সম্পর্কে। আমাকে কোডের এই লাইনটি পরিবর্তন করতে হয়েছিল @Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)

আমি ডেটাবেসে অন্য একটি টেবিল যুক্ত করেছি তবে উপরের লাইনে সারণী যুক্ত করতে ভুলে গেছি।


1

আমারও ত্রুটি ছিল আমার দুটি সমস্যা ছিল।

  1. আপনার যোগ করার প্রয়োজন হতে পারে

    বাস্তবায়ন 'androidx.room:room-kx

  2. আমি এমন একটি ফাইল মুছে ফেলেছি যা ক্রিয়াকলাপ_এক্সএমএল ফাইলগুলির মধ্যে একটিতে সদস্য হিসাবে উল্লেখ করা হয়েছিল। তত্ক্ষণা আমাকে কোনও চিহ্ন দেয়নি যতক্ষণ না আমি এটিকে ক্যাপ্টের পরিবর্তে এ্যানোটেশন প্রসেসরে পরিবর্তন করেছি, তারপরে এটি ত্রুটিটি নির্দেশ করেছে, আমি ফাইলটি খুঁজে পেয়েছি এবং নিশ্চিতভাবেই আমার কাছে এমন কোনও ফাইলের রেফারেন্স ছিল যা আমি আর ব্যবহার করি না এবং মুছে ফেলা হয়েছিল। আমি এই ডেটা রেফারেন্সটি এক্সএমএল থেকে সরিয়েছি এবং এটি সমস্ত পরিষ্কার করেছে। তারপরে আবার ক্যাপ্টে রেখে দিলাম।




0

আমি সবেমাত্র অ্যান্ড্রয়েড স্টুডিও আইডিই 4.1.1 সংস্করণে আপডেট করেছি এবং অনুরূপ সমস্যা পেয়েছি।

আমি যা বুঝতে পেরেছি তা হ'ল ...

… আমার কিছু *_Implক্লাস না করার আগে (কোটলিন স্টাফগুলিতে তাদের সম্পর্কে আমি জানি) এবং এমনকি কিছু নতুন *Testsক্লাসও ছিল না।

সুতরাং, সমাধানের জন্য "সমস্ত বিশ্ব চালান" এর পরে, আমি কেবল একটি স্বজ্ঞাত এবং ন্যায্য পছন্দ করেছি: আমি আমার "হ্যান্ড বিল্টেড" প্যাকেজগুলির মধ্যে থাকা সমস্ত ফাইল মুছে ফেলেছি যা অ্যান্ড্রয়েড স্টুডিও আপডেটের আগে ছিল না

এবং কি অনুমান?

এটা কাজ করেছে. কোনও সমস্যা নেই, এমনকি একটি সমস্যাও নয় kapt

আমি বলছি না যে এটি চূড়ান্ত সমাধান। তবে এটি আপনার পক্ষে কাজ করতে পারে।

ভাল একটা আছে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.