NoSuchMethodException in Benachrichtigungen mit Hilt und Workmanager (Kotlin, Hilt 2.56.2, Workmanager 2.9.0)
Posted: 11 Jul 2025, 18:13
Ich verwende den Hilt mit WorkManager, um Benachrichtigungen im Hintergrund in meiner Anwendung zu synchronisieren, aber ich begegne einen Java.lang.NosuchMethodException Fehler beim Versuch, eine Instanz von NotificationsSyncworker zu erstellen. Es scheint, dass ich alles richtig eingerichtet habe, aber mir fehlt etwas. Bitte helfen Sie mir, herauszufinden, wo der Fehler ist, oder sagen Sie mir, wie Sie am besten debuggen!
Project Configuration
< /li>
< /ul>
build.gradle.KTS
>>
Was ich ausprobiert habe
Entfernte Standard WorkmanagerInitializer aus dem Manifest. Hilt. /> < /li>
Könnte es einen Konflikt zwischen KSP und Kapt geben? /> < /li>
< /ol>
Ich würde mich über Hinweise freuen! < /P.>
Code: Select all
2025-07-10 13:35:31.107 7160-7238 WM-WorkerFactory com.android.tracker_mobile E Could not instantiate com.android.tracker_mobile.data.worker.NotificationSyncWorker
java.lang.NoSuchMethodException: com.android.tracker_mobile.data.worker.NotificationSyncWorker. [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:3395)
...
2025-07-10 13:35:31.107 7160-7238 WM-WorkerWrapper com.android.tracker_mobile E Could not create Worker com.android.tracker_mobile.data.worker.NotificationSyncWorker
- Language: Kotlin 2.1.21
- Hilt:
(ksp)Code: Select all
com.google.dagger:hilt-android:2.56.2
- (Kapt)
Code: Select all
androidx.hilt:hilt-work:1.0.0
- (Kapt)
Code: Select all
androidx.hilt:hilt-compiler:1.0.0
< /li>
< /ul>
build.gradle.KTS
>>
Code: Select all
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
id("com.google.dagger.hilt.android")
id("kotlin-kapt")
}
dependencies {
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.androidx.hilt.work)
kapt(libs.androidx.hilt.work.compiler)
}
< /code>
undroidManifest.xml
< /code>
Anwendungsklasse < /h3>
@HiltAndroidApp
class TrackerApplication : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
override val workManagerConfiguration: Configuration
get() = Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
< /code>
meldificationsyncworker < /h3>
@HiltWorker
class NotificationSyncWorker @AssistedInject constructor(
@Assisted context: Context,
@Assisted params: WorkerParameters,
private val notificationDao: NotificationDao,
private val notificationApi: NotificationApi
) : CoroutineWorker(context, params) {
companion object { const val WORK_NAME = "NotificationSyncWorker" }
override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
try {
val pending = notificationDao.getPendingSyncNotifications()
if (pending.isEmpty()) return@withContext Result.success()
// synchronization logic
Result.success()
} catch (e: Exception) {
Result.retry()
}
}
}
< /code>
Planen des Arbeiters < /h3>
fun scheduleSyncWorker(context: Context) {
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val workRequest = OneTimeWorkRequestBuilder()
.setConstraints(constraints)
.build()
WorkManager.getInstance(context).enqueueUniqueWork(
NotificationSyncWorker.WORK_NAME,
ExistingWorkPolicy.KEEP,
workRequest
)
}
Entfernte Standard WorkmanagerInitializer aus dem Manifest. Hilt. /> < /li>
Könnte es einen Konflikt zwischen KSP und Kapt geben? /> < /li>
< /ol>
Ich würde mich über Hinweise freuen! < /P.>