- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在尝试使用 Retrofit2 设置 Room。我想将 Retrofit2 中的数据插入房间数据库,但插入对我不起作用,应用程序崩溃了。我使用 Room Library 实现了三个组件:实体、Dao 和数据库。
我有这个错误。E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.a694532.e_controlling, PID: 31841
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.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)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.core.executor.AppToolkitTaskExecutor" on path: DexPathList[[zip file "/data/app/com.example.a694532.e_controlling-2/base.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_2_apk.apk", zip file "/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 file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.a694532.e_controlling-2/split_lib_slice_8_apk.apk", zip file "/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]]
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.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)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
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)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
存储库.class
@Singleton
public 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();
}
});
}
}
public class TotoViewModel extends AndroidViewModel {
private GareEtTrainDuJour mGareEtTrain;
private TotoRepository totoRepo;
@Inject
public TotoViewModel(Application application) {
super(application);
totoRepo=new TotoRepository(application);
}
public void init() {
mGareEtTrain=totoRepo.getGareEtTrainDuJour();
}
public GareEtTrainDuJour getGaresTrain() {
return this.mGareEtTrain;
}
最佳答案
我只是将 gradle 依赖项设置为 latest 和 有用。
build.gradle(项目级)
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'
}
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'
}
关于android - : Landroid/arch/core/executor/AppToolkitTaskExecutor 解析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802804/
Issue 2019/05/09 21:50:07.380 +0800 ERROR [ExecutorManager] [Azkaban] No active executors found
我的问题是:使用 Executors.newFixedThreadPool(1)?? 有意义吗? 。在两个线程(main + oneAnotherThread)场景下使用执行器服务是否高效?正在通过调
我想知道,Executors.newSingleThreadExecutor() 之间有什么区别?和 Executors.newFixedThreadPool(1) 以下摘自javadoc Unlik
我的问题是:使用 Executors.newFixedThreadPool(1) 有意义吗??。在两个线程(main + oneAnotherThread)场景中使用执行器服务是否有效?通过调用 ne
我有一个 Apache Spark 应用程序在集群模式下运行在 YARN 集群上(spark 在这个集群上有 3 个节点)。 当应用程序运行时,Spark-UI 显示 2 个执行程序(每个运行在不同的
我想知道是否有任何理由使用 Executor 而不是 ExecutorService。 据我所知,JDK 中没有实现 Executor 接口(interface),它也不是 ExecutorServi
我有多个使用 Celery Executor 的 dag,但我希望使用 Kubernetes Executor 运行一个特定的 dag。我无法推断出一种良好而可靠的方法来实现这一目标。 我有一个 ai
假设我们的 Controller 中有一个 Action 。在每次请求时,许多用户都会调用 performLogin。 def performLogin( ) = { Async {
创建和管理您自己的 ExecutorService 与使用 Spring Boot 的 @Async 方法和 @Bean 方法创建 Executor 添加一个@Bean来创建一个Executor 手动
问题从无到有,只有我在代码中所做的更改 - 安装了 RaSharper(但删除它并重新安装 Visual Studio 没有帮助)。 所以我使用 NUnit 3 来运行测试。 我有 Visual St
我们知道每个任务当时都在一个核心中执行。 假设我们有这样配置的节点集群: 10 节点。 每个节点 16 个核心。 每个节点 64 GB 内存。 我的问题是 有 1 个 16 核的执行程序和 16 个
我正在从 Jupyter Notebook 中初始化 PySpark,如下所示: from pyspark import SparkContext # conf = SparkConf().setAp
我正在向我的 Web 应用程序添加一个基于 Flask 的 API,以控制某些网络自动化功能的启动和停止。我遇到了一个奇怪的行为,即 Flask-Executor .submit() 方法调用的函数似
单元测试在本地运行良好。 在 Visual Studio 2017 托管生成代理上运行时,VSTest 任务失败并显示: 2018-12-08T10:42:16.3779907Z An excepti
我正在尝试制作一个执行器和线程的简单示例。 当我调用 newSingleThreadExecutor(new CustomThreadFactory) 时,一切顺利,但是当我使用 null 参数调用
对于一个线程,我通过以下代码段捕获未捕获的异常。但是,对于 ExecutorService executor = Executors.newFixedThreadPool(10);,如何捕获未捕获的异
我想创建一个 CompletableFuture,其返回值在 Kotlin 中的特定执行程序上运行。 下面的代码工作得很好。 return CompletableFuture.supplyAsync
考虑基本的固定线程池: Executors.newFixedThreadPool(MaxListeners) 我打算不断提交新任务 - 响应传入的 TCP 套接字服务请求。 然而,当每个任务中的Run
我们可以在定义 ThreadPoolExecutors 时提供 BlockingQueue 实现。但是,如果我使用工厂(执行器)创建单个线程池(如下所示),我想知道使用哪个阻塞队列。我猜它是一个 Li
我编写了一个程序来执行两个在 shell 前台运行的命令,直到在终端上按下 ^c。 外壳命令 ./weed master -mdir=/var/lib/qualebs/weed 上面命令的输出是 qu
我是一名优秀的程序员,十分优秀!