Java 错误MyApplication执行任务失败';:app:kaptDebugKotlin';
我的应用程序中有一个错误,每次我看到我构建的项目出现时,我认为这与房间有关,但我无法解决它 日志: MyApplication.javaJava 错误MyApplication执行任务失败';:app:kaptDebugKotlin';,java,android,kotlin,android-room,Java,Android,Kotlin,Android Room,我的应用程序中有一个错误,每次我看到我构建的项目出现时,我认为这与房间有关,但我无法解决它 日志: MyApplication.java package com.example.pokedex; import java.lang.System; d2 = {"Lcom/example/pokedex/MyApplication;", "Landroid/app/Application;", "()V", "dataBase
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();
}
}
类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
}
}
}
}
自从我让AppDatabase执行数据持久化之后,这个错误就开始发生了,我以为问题出在gradle中,但从我看到的情况来看,我无法通过它的版本来修复它,它看起来非常错误。只需遵循谷歌文档:
下面是一个Variy basic应用程序的工作示例,它混合了Kotlin和Java,并包含一个房间数据库。它基于代码的基本思想/意图。然后,您可以对此进行扩展 Kotlin中的PokemonItem实体(表)类:-
@Entity
class PokemonItem {
@PrimaryKey
var id: Long? = null
var name: String = ""
}
PokemonDao界面(Kotlin),只需一个查询即可提取所有内容(它的使用将创建数据库):-
一个活动(Java),它使用上述内容提取所有(由于未添加任何内容,因此未添加任何内容)口袋妖怪:-
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();
}
}
public类MainActivity扩展了AppCompatActivity{
应用数据库口袋妖怪;
口袋妖怪口袋妖怪;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pokemonDB=Room.databaseBuilder(
这
AppDatabase.class,
“poekmon.db”
)
.allowMainThreadQueries()
.build();
pokemonDao=pokemonDB.pokemonDao();
List pokemonItems=pokemonDao.getAllFromPokemonItem();
}
}
结果
运行并使用数据库检查器(Android Studio)显示:-
i、 e.它已编译并运行,并且由于试图打开数据库而创建了数据库
- 请注意,.allowMainThreadQueries允许它在主线程上运行,并且为了简洁起见包含了它
问题解决了,该类不在包中,因此它没有导入,因此,我指出了错误
package com.example.pokedex.dao
完成上述操作后,我在Main:private-AppDataBase pokemonDB;^上遇到了一个错误符号:class AppDataBase位置:class Main活动失败:生成失败,出现异常。*错误:任务的执行失败“:app:kaptDebugKotlin”。>执行org.jetbrains.kotlin.gradle.internal.KaptExecution>java.lang.reflect.InvocationTargetException时出错(无错误消息)
@Database(entities = arrayOf(PokemonItem::class),version = 1)
abstract class AppDatabase: RoomDatabase() {
abstract fun pokeMonDao(): PokemonDao
}
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();
}
}
package com.example.pokedex.dao