My DataStore implementation, in a Java Android app, can't find DataStoreFile
:
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/DataStoreFile;
at androidx.datastore.rxjava3.RxDataStoreBuilder$build$delegateDs$2.invoke(RxDataStoreBuilder.kt:155)
at androidx.datastore.rxjava3.RxDataStoreBuilder$build$delegateDs$2.invoke(RxDataStoreBuilder.kt:154)
at androidx.datastore.core.FileStorage.createConnection(FileStorage.kt:48)
at androidx.datastore.core.DataStoreImpl$storageConnectionDelegate$1.invoke(DataStoreImpl.kt:189)
at androidx.datastore.core.DataStoreImpl$storageConnectionDelegate$1.invoke(DataStoreImpl.kt:188)
...
Here are my app's build.gradle.kts' dependencies:
dependencies {
...
implementation(libs.datastore)
// implementation(libs.datastore.core)
// implementation(libs.datastore.rxjava2)
implementation(libs.datastore.rxjava3)
implementation(libs.protobuf.javalite)
}
... and from libs.versions.toml:
[versions]
datastore = "1.1.1"
protobuf = "4.26.1"
...
[libraries]
datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
datastore-core = { module = "androidx.datastore:datastore-core", version.ref = "datastore" }
datastore-rxjava2 = { module = "androidx.datastore:datastore-rxjava2", version.ref = "datastore" }
datastore-rxjava3 = { group = "androidx.datastore", name = "datastore-rxjava3", version.ref = "datastore" }
protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf" }
...
Here are Android Studio's DataStore and ProtoBuf External Libraries:
Gradle: androidx.datastore:datastore-core-jvm:1.1.1
Gradle: androidx.datastore:datastore-core-okio-jvm:1.1.1
Gradle: androidx.datastore:datastore-jvm:1.1.1
Gradle: androidx.datastore:datastore-rxjava3:1.1.1@aar
...
Gradle: com.google.protobuf:protobuf-javalite:4.26.1
...
And here's how I create the Proto data store:
RxDataStore<NtripService> serviceStore = new RxDataStoreBuilder<>(App.getAppContext(), "service.pb", new ServiceSerializer()).build();
I've tried cleaning and rebuilding, invalidating caches, different library versions, etc., but I can't seem to get past this issue. I mentioned this is a Java app because I'm wondering if some Kotlin dependency might make this work.
How can I include DataStoreFile?
Adding the plugin org.jetbrains.kotlin.android got it working.