0

本番環境で奇妙なエラーが多数発生していますが、これは少数のユーザーにのみ発生するため、99% のユーザーは問題ありません。

java.lang.Error: java.lang.ClassNotFoundException: com.packagename.core.Translations.TranslationWorker
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1119)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

Caused by: java.lang.ClassNotFoundException: com.packagename.core.Translations.TranslationWorker
        at java.lang.Class.classForName(Class.java:-2)
        at java.lang.Class.forName(Class.java:324)
        at java.lang.Class.forName(Class.java:285)
        at com.packagename.core.translations.TranslationWorkerFactory.createWorker(TranslationWorkerFactory.kt:19)
        at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:83)
        at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:242)
        at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:136)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.packagename.core.Translations.TranslationWorker" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.packagename.appname-2/base.apk", zip file "/data/app/com.packagename.appname-2/split_config.armeabi_v7a.apk", zip file "/data/app/com.packagename.appname-2/split_config.cs.apk", zip file "/data/app/com.packagename.appname-2/split_config.xhdpi.apk"],nativeLibraryDirectories=[/data/app/com.packagename.appname-2/lib/arm, /data/app/com.packagename.appname-2/base.apk!/lib/armeabi-v7a, /data/app/com.packagename.appname-2/split_config.armeabi_v7a.apk!/lib/armeabi-v7a, /data/app/com.packagename.appname-2/split_config.cs.apk!/lib/armeabi-v7a, /data/app/com.packagename.appname-2/split_config.xhdpi.apk!/lib/armeabi-v7a, /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 java.lang.Class.classForName(Class.java:-2)
        at java.lang.Class.forName(Class.java:324)
        at java.lang.Class.forName(Class.java:285)
        at com.packagename.core.translations.TranslationWorkerFactory.createWorker(TranslationWorkerFactory.kt:19)
        at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:83)
        at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:242)
        at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:136)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

これが TranslationWorkerFactory のコードです。私はダガーアシスト注入を使用して、ワーカークラスに依存関係を注入しています。

class TranslationWorkerFactory @Inject constructor(
    private val workerFactories: Map<Class<out ListenableWorker>, @JvmSuppressWildcards Provider<ITranslationWorkerFactory>>
) : WorkerFactory() {
    override fun createWorker(
        appContext: Context,
        workerClassName: String,
        workerParameters: WorkerParameters
    ): ListenableWorker? {
        val foundEntry =
                workerFactories.entries.find { Class.forName(workerClassName).isAssignableFrom(it.key) }
        val factoryProvider = foundEntry?.value
                ?: throw IllegalArgumentException("unknown worker class _name: $workerClassName")
        return factoryProvider.get().create(appContext, workerParameters)
    }
}

なぜこれが起こるのか分かりません。ワーカーが行うことは、大きなjsonをダウンロードして解析することなので、例外をスローする理由になる可能性がありますが、それが関連している可能性があるかどうかは私の推測です.

これが発生する理由を知っている人はいますか?

ありがとう

4

1 に答える 1