
我目前正在尝试使用Retrofit2设置Room.我想将数据从Retrofit2插入到Room数据库中,但插入对我来说不起作用,应用程序崩溃了.我使用Room library实现了三个组件:实体,Dao和数据库.
我有结果这个错误.
E / AndroidRuntime:致命异常:主要
处理:com.example.a694532.e_controlling,PID:31841
java.lang.NoClassDefFoundError:解析失败:LandroID / arch / core / executor / AppToolkitTaskExecutor;
在androID.arch.persistence.room.InvalIDationTracker.refreshVersionsAsync(InvalIDationTracker.java:403)
在androID.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
在com.example.a694532.e_controlling.data.db.dao.GareDao_Impl.insertGares(GareDao_Impl.java:116)
at com.example.a694532.e_controlling.service.repository.TotoRepository $1.onResponse(TotoRepository.java:106)
at retrofit2.ExecutorCallAdapterFactory $ExecutorCallbackCall $1 $1.run(ExecutorCallAdapterFactory.java:70)
在androID.os.Handler.handleCallback(Handler.java:739)
在androID.os.Handler.dispatchMessage(Handler.java:95)
在androID.os.Looper.loop(Looper.java:158)
在androID.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
在com.androID.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:1230)
在com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
引起:java.lang.classNotFoundException:路径上没有找到类“androID.arch.core.executor.AppToolkitTaskExecutor”:DexPathList [[zip file“/data/app/com.example.a694532.e_controlling-2/base .apk“,zip文件”/data/app/com.example.a694532.e_controlling-2/split_lib_dependencIEs_apk.apk“,zip文件”/data/app/com.example.a694532.e_controlling-2/split_lib_slice_0_apk.apk“, zip文件“/data/app/com.example.a694532.e_controlling-2/split_lib_slice_1_apk.apk”,zip文件“/data/app/com.example.a694532.e_controlling-2/split_lib_slice_2_apk.apk”,zip文件“/ data / app / com.example.a694532.e_controlling-2 / split_lib_slice_3_apk.apk“,zip file”/data/app/com.example.a694532.e_controlling-2/split_lib_slice_4_apk.apk“,zip file”/ data / app / com.example.a694532.e_controlling-2 / split_lib_slice_5_apk.apk“,zip文件”/data/app/com.example.a694532.e_controlling-2/split_lib_slice_6_apk.apk“,zip文件”/data/app/com.example. a694532.e_controlling-2 / split_lib_slice_7_apk.apk“,zip file”/data/app/com.example.a69 4532.e_controlling-2 / split_lib_slice_8_apk.apk“,zip文件”/data/app/com.example.a694532.e_controlling-2/split_lib_slice_9_apk.apk\”],nativelibraryDirectorIEs=[/data/app/com.example.a694532.e_controlling -2 / lib / arm,/ vendor / lib,/ system / lib]]
在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.classLoader.loadClass(ClassLoader.java:511)
at java.lang.classLoader.loadClass(ClassLoader.java:469)
在androID.arch.persistence.room.InvalIDationTracker.refreshVersionsAsync(InvalIDationTracker.java:403)
在androID.arch.persistence.room.RoomDatabase.endTransaction(RoomDatabase.java:219)
在com.example.a694532.e_controlling.data.db.dao.GareDao_Impl.insertGares(GareDao_Impl.java:116)
at com.example.a694532.e_controlling.service.repository.TotoRepository $1.onResponse(TotoRepository.java:106)
at retrofit2.ExecutorCallAdapterFactory $ExecutorCallbackCall $1 $1.run(ExecutorCallAdapterFactory.java:70)
在androID.os.Handler.handleCallback(Handler.java:739)
在androID.os.Handler.dispatchMessage(Handler.java:95)
在androID.os.Looper.loop(Looper.java:158)
在androID.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
在com.androID.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:1230)
在com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
抑制: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)
……还有13个
引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有堆栈跟踪可用
Repository.class
@Singletonpublic class TotoRepository { //Converters private GareDtoConverter mGareConverter = new GareDtoConverter(); private TrainDuJourDtoConverter mTrainDuJourConverter = new TrainDuJourDtoConverter(); private TotoService totoService; private Executor executor; private GareDao gareDao; private TrainDao trainDao; private TronconDao tronconDao; GareEtTrainDuJour mGareEtTrain=new GareEtTrainDuJour(); MyDatabase database; OkhttpClIEnt okhttpClIEnt = UnsafeOkhttpClIEnt.getUnsafeOkhttpClIEnt(); public TotoRepository (Application application) { Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss") .create(); Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(EndPoint.TICKET) .clIEnt(okhttpClIEnt) .addConverterFactory(GsonConverterFactory.create(gson)); Retrofit retrofit = builder.build(); totoService = retrofit.create(TotoService.class); database = MyDatabase.getInstance(application); gareDao=database.garesDao(); trainDao=database.trainDao(); tronconDao=database.tronconDao(); } /* @Inject public TotoRepository(TotoService totoService, GareDao gareDao,TrainDao trainDao,TronconDao tronconDao, Executor executor) { this.totoService=totoService; this.gareDao=gareDao; this.trainDao=trainDao; this.tronconDao=tronconDao; this.executor = executor; }*/public GareEtTrainDuJour getGareEtTrainDuJour() { refreshGareEtTrainDuJour(); // return a liveData directly from the database. Log.d("loadFromDb","Recuperation des gares et trains du jours depuis la BD"); mGareEtTrain.setGareList(gareDao.getGares()); mGareEtTrain.setTrainList(trainDao.getTrains()); mGareEtTrain.setTronconList(tronconDao.getTroncons()); return mGareEtTrain;} public voID refreshGareEtTrainDuJour(){ totoService.garesetTrainsDuJour().enqueue(new Callback<GaresetTrainsDuJourDTO>() { @OverrIDe public voID onResponse(Call<GaresetTrainsDuJourDTO> call, Response<GaresetTrainsDuJourDTO> response) { gareDao.insertGares(mGareConverter.toModelList(response.body().getGares())); Map<String, Gare> ListnameGare = mGareConverter.myListMapper(mGareConverter.toModelList(response.body().getGares())); trainDao.insertOrReplaceTrains(mTrainDuJourConverter.toTrainModelList(response.body().getTrains(),ListnameGare)); Log.d("RBRBRBRBRB",mTrainDuJourConverter.toTrainModelList(response.body().getTrains(),ListnameGare).toString()); } @OverrIDe public voID onFailure(Call<GaresetTrainsDuJourDTO> call, Throwable t) { Log.d("RBRBRBRBRBFFFF",t.getCause().toString()); Log.d("RBRBRBRBRBFFFF",t.toString()); t.printstacktrace(); } }); }}viewmodel.class
public class Totoviewmodel extends AndroIDviewmodel {private GareEtTrainDuJour mGareEtTrain;private TotoRepository totoRepo;@Injectpublic Totoviewmodel(Application application) { super(application); totoRepo=new TotoRepository(application);}public voID init() { mGareEtTrain=totoRepo.getGareEtTrainDuJour();}public GareEtTrainDuJour getGaresTrain() { return this.mGareEtTrain;}}
解决方法:
我只是将gradle依赖项设置为最新版本并且可以正常工作.
的build.gradle(项目级)
dependencIEs { classpath 'com.androID.tools.build:gradle:3.3.1' classpath 'com.Google.gms:Google-services:4.2.0'}的build.gradle(应用级)
dependencIEs { implementation 'com.Google.firebase:firebase-core:16.0.7' implementation 'com.Google.firebase:firebase-messaging:17.4.0' implementation 'com.Google.androID.gms:play-services-location:16.0.0'} 总结 以上是内存溢出为你收集整理的解析失败:Landroid / arch / core / executor / AppToolkitTaskExecutor全部内容,希望文章能够帮你解决解析失败:Landroid / arch / core / executor / AppToolkitTaskExecutor所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)