删除产生异常 Java
Delete produces an exeption Java
在应用程序中,我使用 Room 创建了不同的表格。我使用其中之一来保存用户在注册期间输入的区域,然后将这些区域添加到注册表单中的微调器中。在此片段中,我使用 @Delete 直到今天它都运行良好。我没有改变任何逻辑,甚至没有访问这个片段。
当我注释掉代码的删除部分时,Room 本身似乎工作正常。
请帮忙!
这是我的代码和日志。
@Dao
public interface RegionDao {
@Query("SELECT * FROM Region")
Cursor getAll();
@Insert
void insertAll(Region... regions);
@Query("SELECT COUNT(*) from Region")
int countRegions();
@Delete
void nukeTable(Region... regions);
}
**当 exepton 发生时,我以前将此代码作为网站上的答案之一建议的删除方法,但随后按照文档建议对其进行了更改,结果是相同的
@Query("DELETE FROM Region")
public void nukeTable();
public class Fragment2 extends Fragment {
AppDatabase myDB;
.......
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {
..............................
mAuth = FirebaseAuth.getInstance();
..
initDB();
myDB.regionDao().nukeTable();
if (myDB.regionDao().countRegions() == 0) {
addRegion();
}
@Override
public void onDestroy() {
super.onDestroy();
myDB.close();
}
private void initDB() {
myDB = Room.databaseBuilder(getContext(),
AppDatabase.class,
"DataBase").allowMainThreadQueries().build();
}
public void addRegion() {
Region newRegion1 = new Region();
Region newRegion2 = new Region();
Region newRegion3 = new Region();
Region newRegion4 = new Region();
Region newRegion5 = new Region();
Region newRegion6 = new Region();
newRegion1.setRegion("Alaska");
newRegion2.setRegion("Texas");
newRegion3.setRegion("Columbia");
newRegion4.setRegion("Utah");
newRegion5.setRegion("California");
newRegion6.setRegion("Florida");
myDB.regionDao().insertAll(newRegion1);
myDB.regionDao().insertAll(newRegion2);
myDB.regionDao().insertAll(newRegion3);
myDB.regionDao().insertAll(newRegion4);
myDB.regionDao().insertAll(newRegion5);
myDB.regionDao().insertAll(newRegion6);
}
日志:
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/core/executor/AppToolkitTaskExecutor;
at android.arch.persistence.room.InvalidationTracker.refreshVersionsAsync(InvalidationTracker.java:403)
at android.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
at com.anastacia.test_2.room.RegionDao_Impl.nukeTable(RegionDao_Impl.java:70)
at com.anastacia.test_2.Fragments.Fragment2.onCreateView(Fragment2.java:74)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5791)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.core.executor.AppToolkitTaskExecutor" on path: DexPathList[[zip file "/data/app/com.anastacia.test_2-2/base.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.anastacia.test_2-2/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.arch.persistence.room.InvalidationTracker.refreshVersionsAsync(InvalidationTracker.java:403)
at android.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
at com.anastacia.test_2.room.RegionDao_Impl.nukeTable(RegionDao_Impl.java:70)
at com.anastacia.test_2.Fragments.Fragment2.onCreateView(Fragment2.java:74)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5791)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Suppressed: java.lang.ClassNotFoundException: android.arch.core.executor.AppToolkitTaskExecutor
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
正在引用的日志找不到 class "android.arch.core.executor.AppToolkitTaskExecutor"
这是来自 "android.arch.lifecycle:compiler" 的 class,请检查您的 gradle 并确保您的所有组件依赖项都是最新的,即今天 "android.arch.lifecycle:compiler:1.0.0-rc1" 的最新版本
您可以在以下超链接中查看所有组件依赖版本
Adding Architecture Components to your Project - Google Developers
希望对您有所帮助。
在应用程序中,我使用 Room 创建了不同的表格。我使用其中之一来保存用户在注册期间输入的区域,然后将这些区域添加到注册表单中的微调器中。在此片段中,我使用 @Delete 直到今天它都运行良好。我没有改变任何逻辑,甚至没有访问这个片段。 当我注释掉代码的删除部分时,Room 本身似乎工作正常。 请帮忙! 这是我的代码和日志。
@Dao
public interface RegionDao {
@Query("SELECT * FROM Region")
Cursor getAll();
@Insert
void insertAll(Region... regions);
@Query("SELECT COUNT(*) from Region")
int countRegions();
@Delete
void nukeTable(Region... regions);
}
**当 exepton 发生时,我以前将此代码作为网站上的答案之一建议的删除方法,但随后按照文档建议对其进行了更改,结果是相同的
@Query("DELETE FROM Region")
public void nukeTable();
public class Fragment2 extends Fragment {
AppDatabase myDB;
.......
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {
..............................
mAuth = FirebaseAuth.getInstance();
..
initDB();
myDB.regionDao().nukeTable();
if (myDB.regionDao().countRegions() == 0) {
addRegion();
}
@Override
public void onDestroy() {
super.onDestroy();
myDB.close();
}
private void initDB() {
myDB = Room.databaseBuilder(getContext(),
AppDatabase.class,
"DataBase").allowMainThreadQueries().build();
}
public void addRegion() {
Region newRegion1 = new Region();
Region newRegion2 = new Region();
Region newRegion3 = new Region();
Region newRegion4 = new Region();
Region newRegion5 = new Region();
Region newRegion6 = new Region();
newRegion1.setRegion("Alaska");
newRegion2.setRegion("Texas");
newRegion3.setRegion("Columbia");
newRegion4.setRegion("Utah");
newRegion5.setRegion("California");
newRegion6.setRegion("Florida");
myDB.regionDao().insertAll(newRegion1);
myDB.regionDao().insertAll(newRegion2);
myDB.regionDao().insertAll(newRegion3);
myDB.regionDao().insertAll(newRegion4);
myDB.regionDao().insertAll(newRegion5);
myDB.regionDao().insertAll(newRegion6);
}
日志:
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/core/executor/AppToolkitTaskExecutor;
at android.arch.persistence.room.InvalidationTracker.refreshVersionsAsync(InvalidationTracker.java:403)
at android.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
at com.anastacia.test_2.room.RegionDao_Impl.nukeTable(RegionDao_Impl.java:70)
at com.anastacia.test_2.Fragments.Fragment2.onCreateView(Fragment2.java:74)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5791)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.core.executor.AppToolkitTaskExecutor" on path: DexPathList[[zip file "/data/app/com.anastacia.test_2-2/base.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.anastacia.test_2-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.anastacia.test_2-2/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.arch.persistence.room.InvalidationTracker.refreshVersionsAsync(InvalidationTracker.java:403)
at android.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
at com.anastacia.test_2.room.RegionDao_Impl.nukeTable(RegionDao_Impl.java:70)
at com.anastacia.test_2.Fragments.Fragment2.onCreateView(Fragment2.java:74)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5791)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Suppressed: java.lang.ClassNotFoundException: android.arch.core.executor.AppToolkitTaskExecutor
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
正在引用的日志找不到 class "android.arch.core.executor.AppToolkitTaskExecutor" 这是来自 "android.arch.lifecycle:compiler" 的 class,请检查您的 gradle 并确保您的所有组件依赖项都是最新的,即今天 "android.arch.lifecycle:compiler:1.0.0-rc1" 的最新版本
您可以在以下超链接中查看所有组件依赖版本
Adding Architecture Components to your Project - Google Developers
希望对您有所帮助。