gpt4 book ai didi

java - 调用 Rooms inMemoryBuilder 方法时,Room Persistence Library 运行时异常

转载 作者:IT老高 更新时间:2023-10-28 21:20:42 27 4
gpt4 key购买 nike

按照教程设置 Room 持久性库时,我在 Android 设备上进行测试时遇到了这个错误。

java.lang.RuntimeException:找不到 PackageName.AppDatabase 的实现。 AppDatabase_Impl 不存在

我知道有人问过类似的问题,但是问题是由于 kotlin gradle 问题引起的。 Possible Duplicate

测试类:

@RunWith(AndroidJUnit4.class)
public class LocalDatabaseTest {

private PhotoDao mPhotoDao;
private AppDatabase mDb;

@Before
public void createDb() {
Context context = InstrumentationRegistry.getTargetContext();
mDb = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class).build();
mPhotoDao = mDb.photoDao();
}

@After
public void closeDb() throws IOException {
//mDb.close();
}

@Test
public void testPreConditions() {
assertNotNull(mDb);
}

道:

    @Dao
public interface PhotoDao {
@Delete()
public void delete(Photo... photos);

@Update
public void update(Photo ... photos);

@Insert
public void insert(Photo ... photos);
}

数据库:

@Database(entities = {Photo.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract PhotoDao photoDao();
}

堆栈跟踪:

java.lang.RuntimeException: cannot find implementation for *PackageName*.AppDatabase. AppDatabase_Impl does not exist
at android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:90)
at android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:340)
at pics.chooz.choozpics.LocalDatabaseTest.createDb(LocalDatabaseTest.java:40)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1853)

分级:

apply plugin: "com.android.application"
apply plugin: "android-apt"

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
applicationId "*Package Name*"
minSdkVersion 16
targetSdkVersion 25
versionCode 50
versionName "1.0.32"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

dexOptions {
javaMaxHeapSize "4g"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
debug {
debuggable true
}
}

lintOptions {
abortOnError false
disable "ResourceType"
}

sourceCompatibility = 1.7
targetCompatibility = 1.7
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}

packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
}
dependencies {

androidTestCompile "com.android.support:support-annotations:$androidVersion"
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'

compile "android.arch.persistence.room:runtime:1.0.0-alpha1"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha1"
}

最佳答案

我在我的 gradle 文件中将“annotationProcessor”关键字更改为“kapt”。像这样:

kapt "android.arch.persistence.room:compiler:1.0.0"

关于java - 调用 Rooms inMemoryBuilder 方法时,Room Persistence Library 运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com