Saya memiliki kesalahan di MyApplication, setiap kali saya melihat bahwa saya membangun proyek itu muncul, saya pikir itu ada hubungannya dengan ruangan tetapi saya tidak bisa menyelesaikannya

Catatan:

Task :app:kaptDebugKotlin FAILED
C:\Users\matheus.correa_est\Desktop\Pokedex- 
master\app\build\tmp\kapt3\stubs\debug\com\example\pokedex\MyApplication.java:13: error: cannot find 
symbol
    public final AppDataBase getDataBase() {
                 ^
  symbol:   class AppDataBase
  location: class MyApplication
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

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 2s
24 actionable tasks: 1 executed, 23 up-to-date

Aplikasiku.java

package com.example.pokedex;

import java.lang.System;

d2 = {"Lcom/example/pokedex/MyApplication;", "Landroid/app/Application;", "()V", "dataBase", 
"LAppDataBase;", "getDataBase", "()LAppDataBase;", "dataBase$delegate", "Lkotlin/Lazy;", 
"repository", "Lcom/example/pokedex/repository/PokedexRepository;", "getRepository", " 
()Lcom/example/pokedex/repository/PokedexRepository;", "repository$delegate", "app_debug"})
public class MyApplication extends android.app.Application {
    @org.jetbrains.annotations.NotNull()
    private final kotlin.Lazy dataBase$delegate = null;
    @org.jetbrains.annotations.NotNull()
    private final kotlin.Lazy repository$delegate = null;

    @org.jetbrains.annotations.NotNull()
    public final AppDataBase getDataBase() {   //  line where the error is being shown in the log
        return null;
    }

    @org.jetbrains.annotations.NotNull()
    public final com.example.pokedex.repository.PokedexRepository getRepository() {
        return null;
    }

    public MyApplication() {
        super();
    }
}

Kelas AppDatabase

@Database(entities = [PokemonItem::class], version = 1, exportSchema = false)
abstract class AppDataBase: RoomDatabase() {
abstract fun pokemonDAO(): PokemonDAO

companion object {
    @Volatile
    private var INSTANCE: AppDataBase? = null
    fun getDataBase(context: Context): AppDataBase {
        return INSTANCE ?: synchronized(this) {
            val instance = Room.databaseBuilder(
                context.applicationContext,
                AppDataBase::class.java,
                "pokemon-db"
            )
                .build()
            INSTANCE = instance
            instance
        }
    }
   }
 }

Kesalahan ini mulai terjadi sejak saya meletakkan AppDatabase untuk melakukan persistensi data, saya pikir masalahnya ada di gradle tetapi dari apa yang saya lihat saya tidak bisa memperbaikinya dengan versinya

0
Matheus Finamor 5 April 2021, 16:30

3 jawaban

Jawaban Terbaik

Masalah terpecahkan, kelas keluar dari paket, karena alasan ini tidak diimpor dan karenanya, saya menunjukkan kesalahannya

package com.example.pokedex.dao
0
Matheus Finamor 6 April 2021, 14:45

Berikut adalah contoh kerja dari Aplikasi dasar yang bervariasi yang memiliki campuran Kotlin dan Java dan menyertakan database Room. Ini didasarkan pada ide/niat dasar dari kode Anda. Anda kemudian dapat memperluas ini.

Kelas PokemonItem Entitas (tabel) di Kotlin :-

@Entity
class PokemonItem {
    @PrimaryKey
    var id: Long? = null
    var name: String = ""
}

Antarmuka PokemonDao (Kotlin) hanya dengan kueri untuk mengekstrak semua (penggunaannya akan membuat database):-

@Dao
public interface PokemonDao {

    @Query("SELECT * FROM pokemonitem")
    fun getAllFromPokemonItem(): List<PokemonItem>
}

Kelas abstrak AppDatabase yang disederhanakan (Kotlin) (bukan singleton):-

@Database(entities = arrayOf(PokemonItem::class),version = 1)
abstract class AppDatabase: RoomDatabase() {
    abstract fun pokeMonDao(): PokemonDao
}

Aktivitas (Java) yang menggunakan hal di atas untuk mengekstrak semua (tidak ada karena tidak ada yang ditambahkan) PokemonItems: -

public class MainActivity extends AppCompatActivity {

    AppDatabase pokemonDB;
    PokemonDao pokemonDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pokemonDB = Room.databaseBuilder(
                this,
                AppDatabase.class,
                "poekmon.db"
        )
                .allowMainThreadQueries()
                .build();
        pokemonDao = pokemonDB.pokeMonDao();
        List<PokemonItem> pokemonItems = pokemonDao.getAllFromPokemonItem();
    }
}

Hasil

Menjalankan dan kemudian menggunakan Database Inspector (Android Studio) menunjukkan: -

Yaitu Ini telah dikompilasi dan dijalankan dan karena upaya untuk membuka database telah membuat database.

  • Perhatikan bahwa .allowMainThreadQueries memungkinkannya berjalan di utas utama dan telah disertakan untuk singkatnya.

:-

enter image description here

0
MikeT 6 April 2021, 00:32

Ini terlihat sangat salah. Cukup ikuti dokumen google:

https://developer.android.com/training/data-storage/room

0
c-an 5 April 2021, 14:38